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

NAME

       pmem2_source_size() - returns the size of the data source

SYNOPSIS

              #include <libpmem2.h>

              struct pmem2_source;
              int pmem2_source_size(const struct pmem2_source *source, size_t *size);

DESCRIPTION

       The  pmem2_source_size()  function retrieves the size of the file in bytes pointed by file
       descriptor or handle stored in the source and puts it in *size.

       This function is a portable replacement for OS-specific APIs.   On  Linux,  it  hides  the
       quirkiness of Device DAX size detection.

RETURN VALUE

       The  pmem2_source_size()  function returns 0 on success.  If the function fails, the *size
       variable is left unmodified and a negative error code is returned.

ERRORS

       The pmem2_source_size() can fail with the following errors:

       On all systems:

       • PMEM2_E_INVALID_FILE_HANDLE - source contains an invalid file handle.

       On Windows:

       • PMEM2_E_INVALID_FILE_TYPE - handle points to a resource that is not a regular file.

       On Linux:

       • PMEM2_E_INVALID_FILE_TYPE - file descriptor points to a directory, block  device,  pipe,
         or socket.

       • PMEM2_E_INVALID_FILE_TYPE  -  file  descriptor  points  to a character device other than
         Device DAX.

       • PMEM2_E_INVALID_SIZE_FORMAT - kernel query for Device DAX size returned data in  invalid
         format.

       • -errno set by failing fstat(2), while trying to validate the file descriptor.

       • -errno  set  by  failing  realpath(3),  while trying to determine whether fd points to a
         Device DAX.

       • -errno set by failing open(2), while trying to determine Device DAX’s size.

       • -errno set by failing read(2), while trying to determine Device DAX’s size.

       • -errno set by failing strtoull(3), while trying to determine Device DAX’s size.

       On FreeBSD:

       • PMEM2_E_INVALID_FILE_TYPE - file descriptor points to a directory, block  device,  pipe,
         socket, or character device.

       • -errno set by failing fstat(2), while trying to validate the file descriptor.

SEE ALSO

       errno(3),  fstat(2),  realpath(3),  open(2),  read(2),  strtoull(3),  pmem2_config_new(3),
       libpmem2(7) and <https://pmem.io>