If pwrite(2) encounters poison in a pmem range, it fails with EIO. This is unecessary if hardware is capable of clearing the poison. Though not all dax backend hardware has the capability of clearing poison on the fly, but dax backed by Intel DCPMEM has such capability, and it's desirable to, first, speed up repairing by means of it; second, maintain backend continuity instead of fragmenting it in search for clean blocks. Jane Chu (3): dax: introduce dax_operation dax_clear_poison dax: introduce dax_clear_poison to dax pwrite operation libnvdimm/pmem: Provide pmem_dax_clear_poison for dax operation drivers/dax/super.c | 13 +++++++++++++ drivers/nvdimm/pmem.c | 17 +++++++++++++++++ fs/dax.c | 9 +++++++++ include/linux/dax.h | 6 ++++++ 4 files changed, 45 insertions(+) -- 2.18.4