linux/drivers/nvdimm
Jane Chu f42e8e5088 pmem: implement pmem_recovery_write()
The recovery write thread started out as a normal pwrite thread and
when the filesystem was told about potential media error in the
range, filesystem turns the normal pwrite to a dax_recovery_write.

The recovery write consists of clearing media poison, clearing page
HWPoison bit, reenable page-wide read-write permission, flush the
caches and finally write.  A competing pread thread will be held
off during the recovery process since data read back might not be
valid, and this is achieved by clearing the badblock records after
the recovery write is complete. Competing recovery write threads
are already serialized by writer lock held by dax_iomap_rw().

Signed-off-by: Jane Chu <jane.chu@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/165247997655.53156.8381418704988035976.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
2022-05-16 13:38:19 -07:00
..
badrange.c mm/memremap_pages: convert to 'struct range' 2020-10-13 18:38:28 -07:00
btt_devs.c block: remove genhd.h 2022-02-02 07:49:59 -07:00
btt.c nvdimm-btt: use bvec_kmap_local in btt_rw_integrity 2022-03-04 12:29:21 -07:00
btt.h nvdimm-btt: convert to blk_alloc_disk/blk_cleanup_disk 2021-06-01 07:42:23 -06:00
bus.c libnvdimm for 5.18 2022-03-30 10:04:11 -07:00
claim.c libnvdimm: Cleanup include of badblocks.h 2020-12-15 21:47:45 -08:00
core.c cxl for v5.16 2021-11-08 11:49:48 -08:00
dax_devs.c
dimm_devs.c nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
dimm.c libnvdimm: Make remove callback return void 2021-02-16 19:35:29 -08:00
e820.c
Kconfig nvdimm/blk: Delete the block-aperture window driver 2022-03-11 15:53:12 -08:00
label.c nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
label.h nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
Makefile drivers/nvdimm: Fix build failure when CONFIG_PERF_EVENTS is not set 2022-03-23 12:17:36 -07:00
namespace_devs.c nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
nd_perf.c drivers/nvdimm: Fix build failure when CONFIG_PERF_EVENTS is not set 2022-03-23 12:17:36 -07:00
nd_virtio.c block: pass a block_device and opf to bio_alloc 2022-02-02 07:49:59 -07:00
nd-core.h libnvdimm for 5.18 2022-03-30 10:04:11 -07:00
nd.h nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
of_pmem.c powerpc/pmem: Initialize pmem device on newer hardware 2020-07-16 13:00:23 +10:00
pfn_devs.c block: remove genhd.h 2022-02-02 07:49:59 -07:00
pfn.h
pmem.c pmem: implement pmem_recovery_write() 2022-05-16 13:38:19 -07:00
pmem.h dax: introduce DAX_RECOVERY_WRITE dax access mode 2022-05-16 13:35:56 -07:00
region_devs.c nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
region.c nvdimm/region: Delete nd_blk_region infrastructure 2022-03-11 15:53:13 -08:00
security.c nvdimm: Allow overwrite in the presence of disabled dimms 2022-04-28 15:47:46 -07:00
virtio_pmem.c virtio: wrap config->reset calls 2022-01-14 18:50:52 -05:00
virtio_pmem.h