pmem2_badblock_clear() - clear the given bad block
#include <libpmem2.h> struct pmem2_badblock; struct pmem2_badblock_context; int pmem2_badblock_clear( struct pmem2_badblock_context *bbctx, struct pmem2_badblock *bb);
The pmem2_badblock_clear() function clears the given *bb bad block.
It means that the pmem2_badblock_clear() function unmaps bad blocks and maps new, healthy, blocks in place of the bad ones. The new blocks are zeroed. The content of the bad blocks is lost.
It is not supported on Windows.
The pmem2_badblock_clear() function clears the given *bb bad block and returns 0 on success or it returns a negative error code on failure.
pmem2_badblock_clear() can fail with the following errors:
PMEM2_E_OFFSET_OUT_OF_RANGE - bad block’s offset is greater than INT64_MAX
PMEM2_E_LENGTH_OUT_OF_RANGE - bad block’s length is greater than INT64_MAX
PMEM2_E_NOSUPP - on Windows or when the OS does not support this functionality
-errno - set by failing fallocate(2), while deallocating bad blocks or allocating new blocks
-errno - set by failing ndctl functions: ndctl_bus_cmd_new_ars_cap, ndctl_cmd_submit, ndctl_cmd_ars_cap_get_range or ndctl_bus_cmd_new_clear_error while trying to clear a bad block in a DAX device
-ENXIO - ndctl_bus_cmd_new_clear_error did not manage to clear all bad blocks
pmem2_badblock_context_new(3), pmem2_badblock_next(3), libpmem2(7) and http://pmem.io
The contents of this web site and the associated GitHub repositories are BSD-licensed open source.