pmem2 API version 1.0

The PMDK repository on GitHub is the ultimate source of information on PMDK from release 2.0! For all questions and to submit eventual issues please follow to that repository. The PMDK documentation collected here should be valid up to the 1.13.1 release but is maintained only on a best-effort basis and may not reflect the latest state of the art.

NAME
SYNOPSIS
DESCRIPTION
RETURN VALUE
SEE ALSO

NAME

pmem2_source_device_usc() - returns the unsafe shutdown counter value of a device

SYNOPSIS

#include <libpmem2.h>

struct pmem2_source;
int pmem2_source_device_usc(const struct pmem2_source *source, uint64_t *usc);

DESCRIPTION

The pmem2_source_device_usc() function retrieves the sum of the unsafe shutdown count(USC) values of all hardware devices backing the data source and stores it in *usc.

Please refer to libpmem2_unsafe_shutdown(7) for detailed description on how to properly consume this information.

RETURN VALUE

The pmem2_source_device_usc() function returns 0 on success. If the function fails, the *usc variable content is left unmodified, and one of the following errors is returned:

On all systems:

  • PMEM2_E_NOSUPP - the underlying platform does not expose unsafe shutdown count information.

On Windows:

  • -errno equivalent of return code set by failing GetFinalPathNameByHandleW(), while trying to resolve volume path from the file handle.

  • -errno set by failing malloc(3), while trying to allocate a buffer for storing volume path.

  • -errno equivalent of return code set by failing CreateFileW(), while trying to obtain a handle to the volume.

  • -errno equivalent of return code set by failing DeviceIoControl(), while trying to obtain volume USC value.

On Linux:

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

  • -errno set by failing ndctl_new(), while trying to initiate a new NDCTL library context.

  • -errno set by failing ndctl_dimm_get_dirty_shutdown(), while trying to obtain DIMM USC value.

SEE ALSO

fstat(2), errno(3), malloc(3), libpmem2_unsafe_shutdown(7), and http://pmem.io

The contents of this web site and the associated GitHub repositories are BSD-licensed open source.