Changes since v2: [1] 1/ Statically allocate the badblocks list in struct pmem_device, to support dynamically establishing the first badblocks entry via sysfs. (Vishal) 2/ Fix pmem_rw_page() to skip page_endio() on error (Vishal) 3/ Replace devm_alloc_badblocks() with devm_init_badblocks(). The expectation is that a driver that wants to use badblocks handles the base allocation internally. 4/ Simplify nvdimm_namespace_add_poison() and __add_badblock_range(). [1]: https://lists.01.org/pipermail/linux-nvdimm/2016-January/003901.html --- Following the enabling to retrieve a platform provided list of nvdimm media errors [2], implement error handling in the pmem i/o paths. This adds the following capabilities: 1/ Consult badblocks in the pmem_make_request() path to fail block layer requests to platform advertised bad address ranges. 2/ Consult badblocks in the nvdimm_read_bytes() path to communicate errors for namespace metadata reads and btt data reads. [2]: https://lists.01.org/pipermail/linux-nvdimm/2015-December/003706.html --- Dan Williams (10): libnvdimm, pmem: move definition of nvdimm_namespace_add_poison to nd.h badblocks: rename badblocks_free to badblocks_exit block: clarify badblocks lifetime block, badblocks: introduce devm_init_badblocks libnvdimm: don't fail init for full badblocks list libnvdimm: convert to statically allocated badblocks pmem: fail io-requests to known bad blocks pmem, dax: disable dax in the presence of bad blocks libnvdimm, pmem: nvdimm_read_bytes() badblocks support block: kill disk_{check|set|clear|alloc}_badblocks block/badblocks.c | 56 ++++++++++++++++++++++++++---------- block/genhd.c | 47 ------------------------------ block/ioctl.c | 10 ++++++ drivers/md/md.c | 2 + drivers/nvdimm/core.c | 64 +++++++++++++++-------------------------- drivers/nvdimm/nd-core.h | 2 - drivers/nvdimm/nd.h | 2 + drivers/nvdimm/pmem.c | 70 +++++++++++++++++++++++++++++++++++---------- include/linux/badblocks.h | 16 +++++++++- include/linux/genhd.h | 5 --- 10 files changed, 145 insertions(+), 129 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html