libnvdimm: Add a poison list and export badblocks
During region creation, perform Address Range Scrubs (ARS) for the SPA (System Physical Address) ranges to retrieve known poison locations from firmware. Add a new data structure 'nd_poison' which is used as a list in nvdimm_bus to store these poison locations. When creating a pmem namespace, if there is any known poison associated with its physical address space, convert the poison ranges to bad sectors that are exposed using the badblocks interface. Signed-off-by: Vishal Verma <vishal.l.verma@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:

committed by
Dan Williams

parent
d26f73f083
commit
0caeef63e6
@@ -30,6 +30,7 @@ struct nvdimm_bus {
|
||||
struct list_head list;
|
||||
struct device dev;
|
||||
int id, probe_active;
|
||||
struct list_head poison_list;
|
||||
struct mutex reconfig_mutex;
|
||||
};
|
||||
|
||||
@@ -89,4 +90,6 @@ bool __nd_attach_ndns(struct device *dev, struct nd_namespace_common *attach,
|
||||
ssize_t nd_namespace_store(struct device *dev,
|
||||
struct nd_namespace_common **_ndns, const char *buf,
|
||||
size_t len);
|
||||
int nvdimm_namespace_add_poison(struct gendisk *disk, resource_size_t offset,
|
||||
struct nd_namespace_common *ndns);
|
||||
#endif /* __ND_CORE_H__ */
|
||||
|
Reference in New Issue
Block a user