Provided by: libpmemlog-dev_1.13.1-1.1ubuntu2_amd64 bug

NAME

       pmemlog_create()(DEPRECATED),           pmemlog_open()(DEPRECATED),          pmemlog_close()(DEPRECATED),
       pmemlog_check()(DEPRECATED) - create, open, close and validate persistent memory resident log file

SYNOPSIS

              #include <libpmemlog.h>

              PMEMlogpool *pmemlog_open(const char *path);
              PMEMlogpool *pmemlog_create(const char *path, size_t poolsize, mode_t mode);
              void pmemlog_close(PMEMlogpool *plp);
              int pmemlog_check(const char *path);

DESCRIPTION

       The pmemlog_create() function creates a log memory  pool  with  the  given  total  poolsize.   Since  the
       transactional  nature of a log memory pool requires some space overhead in the memory pool, the resulting
       available log size is less than poolsize, and is made available to the caller  via  the  pmemlog_nbyte(3)
       function.  path specifies the name of the memory pool file to be created.  mode specifies the permissions
       to use when creating the file as described by creat(2).  The memory pool file is fully allocated  to  the
       size  poolsize  using  posix_fallocate(3).  The caller may choose to take responsibility for creating the
       memory pool file by creating it before calling pmemlog_create() and then specifying poolsize as zero.  In
       this  case  pmemlog_create()  will  take the pool size from the size of the existing file and will verify
       that the file appears to be empty by searching for any non-zero data in the pool header at the  beginning
       of  the  file.   The  net  pool size of a pool file is equal to the file size.  The minimum net pool size
       allowed by the library for a log pool is defined in <libpmemlog.h> as PMEMLOG_MIN_POOL.

       Depending on the configuration of the system, the available non-volatile memory space may be divided into
       multiple  memory  devices.  In such case, the maximum size of the pmemlog memory pool could be limited by
       the capacity of a single memory device.  libpmemlog(7) allows building persistent  memory  resident  logs
       spanning  multiple  memory  devices  by creation of persistent memory pools consisting of multiple files,
       where each part of such a pool set may be stored on a different memory device or pmem-aware filesystem.

       Creation of all the parts of the pool set can be done with  pmemlog_create();  however,  the  recommended
       method for creating pool sets is with the pmempool(1) utility.

       When  creating a pool set consisting of multiple files, the path argument passed to pmemlog_create() must
       point to the special set file that defines the pool layout and the location of all the parts of the  pool
       set.  The poolsize argument must be 0.  The meaning of the mode argument does not change, except that the
       same mode is used for creation of all the parts of the pool set.

       The set file is a plain text file, the structure of which is described in poolset(5).

       The pmemlog_open() function opens an existing log memory pool.  Similar to  pmemlog_create(),  path  must
       identify  either  an  existing  log  memory  pool  file,  or the set file used to create a pool set.  The
       application must have permission to open the file and memory map the file or  pool  set  with  read/write
       permissions.

       Be  aware  that  if  the  pool  contains  bad blocks inside, opening can be aborted by the SIGBUS signal,
       because currently the pool is not checked against bad blocks during opening.  It  can  be  turned  on  by
       setting  the  CHECK_BAD_BLOCKS  compat feature.  For details see description of this feature in pmempool-
       feature(1).

       The pmemlog_close() function closes the memory pool indicated by plp and deletes the memory pool  handle.
       The  log  memory  pool  itself lives on in the file that contains it and may be re-opened at a later time
       using pmemlog_open() as described above.

       The pmemlog_check() function performs a consistency check of the file indicated by path.  pmemlog_check()
       opens the given path read-only so it never makes any changes to the file.  This function is not supported
       on Device DAX.

RETURN VALUE

       On success, pmemlog_create() returns a PMEMlogpool* handle to the memory pool that is used with  most  of
       the  functions from libpmemlog(7).  If an error prevents any of the pool set files from being created, it
       returns NULL and sets errno appropriately.

       On success, pmemlog_open() returns a PMEMlogpool* handle to the memory pool that is used with most of the
       functions  from  libpmemlog(7).   If an error prevents the pool from being opened, or a pool set is being
       opened and the actual size of any file does not match the corresponding part  size  defined  in  the  set
       file, pmemlog_open() returns NULL and sets errno appropriately.

       The pmemlog_close() function returns no value.

       The  pmemlog_check()  function  returns  1  if  the  persistent  memory  resident log file is found to be
       consistent.  Any inconsistencies will cause pmemlog_check() to return 0, in which case  the  use  of  the
       file  with  libpmemlog  will  result in undefined behavior.  The debug version of libpmemlog will provide
       additional details on inconsistencies when PMEMLOG_LOG_LEVEL is at least 1, as described in the DEBUGGING
       AND  ERROR  HANDLING section in libpmemlog(7).  pmemlog_check() will return -1 and set errno if it cannot
       perform the consistency check due to other errors.

CAVEATS

       Not all file systems support posix_fallocate(3).  pmemlog_create()  will  fail  if  the  underlying  file
       system does not support posix_fallocate(3).

SEE ALSO

       pmempool(1),    creat(2),    posix_fallocate(3),    pmemlog_nbyte(3),   poolset(5),   libpmemlog(7)   and
       <https://pmem.io>