libnvdimm, pmem: flush posted-write queues on shutdown
Commit writes to media on system shutdown or pmem driver unload. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
@@ -136,6 +136,21 @@ static int nvdimm_bus_remove(struct device *dev)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void nvdimm_bus_shutdown(struct device *dev)
|
||||
{
|
||||
struct nvdimm_bus *nvdimm_bus = walk_to_nvdimm_bus(dev);
|
||||
struct nd_device_driver *nd_drv = NULL;
|
||||
|
||||
if (dev->driver)
|
||||
nd_drv = to_nd_device_driver(dev->driver);
|
||||
|
||||
if (nd_drv && nd_drv->shutdown) {
|
||||
nd_drv->shutdown(dev);
|
||||
dev_dbg(&nvdimm_bus->dev, "%s.shutdown(%s)\n",
|
||||
dev->driver->name, dev_name(dev));
|
||||
}
|
||||
}
|
||||
|
||||
void nd_device_notify(struct device *dev, enum nvdimm_event event)
|
||||
{
|
||||
device_lock(dev);
|
||||
@@ -214,6 +229,7 @@ static struct bus_type nvdimm_bus_type = {
|
||||
.match = nvdimm_bus_match,
|
||||
.probe = nvdimm_bus_probe,
|
||||
.remove = nvdimm_bus_remove,
|
||||
.shutdown = nvdimm_bus_shutdown,
|
||||
};
|
||||
|
||||
static ASYNC_DOMAIN_EXCLUSIVE(nd_async_domain);
|
||||
|
Verwijs in nieuw issue
Block a user