libnvdimm, pmem, pfn: make pmem_rw_bytes generic and refactor pfn setup
In preparation for providing an alternative (to block device) access mechanism to persistent memory, convert pmem_rw_bytes() to nsio_rw_bytes(). This allows ->rw_bytes() functionality without requiring a 'struct pmem_device' to be instantiated. In other words, when ->rw_bytes() is in use i/o is driven through 'struct nd_namespace_io', otherwise it is driven through 'struct pmem_device' and the block layer. This consolidates the disjoint calls to devm_exit_badblocks() and devm_memunmap() into a common devm_nsio_disable() and cleans up the init path to use a unified pmem_attach_disk() implementation. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
@@ -273,8 +273,7 @@ static int __nd_btt_probe(struct nd_btt *nd_btt,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int nd_btt_probe(struct device *dev, struct nd_namespace_common *ndns,
|
||||
void *drvdata)
|
||||
int nd_btt_probe(struct device *dev, struct nd_namespace_common *ndns)
|
||||
{
|
||||
int rc;
|
||||
struct device *btt_dev;
|
||||
@@ -289,7 +288,6 @@ int nd_btt_probe(struct device *dev, struct nd_namespace_common *ndns,
|
||||
nvdimm_bus_unlock(&ndns->dev);
|
||||
if (!btt_dev)
|
||||
return -ENOMEM;
|
||||
dev_set_drvdata(btt_dev, drvdata);
|
||||
btt_sb = devm_kzalloc(dev, sizeof(*btt_sb), GFP_KERNEL);
|
||||
rc = __nd_btt_probe(to_nd_btt(btt_dev), ndns, btt_sb);
|
||||
dev_dbg(dev, "%s: btt: %s\n", __func__,
|
||||
|
Reference in New Issue
Block a user