diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-07-09 09:12:52 +0200 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-07-13 00:13:48 +0200 |
commit | 476f848aaee466fd5d74f123fa652e757f2baeba (patch) | |
tree | d84cdd4fdb50252dfc5d1e2916b665d4f5570b76 /drivers/nvdimm/pmem.c | |
parent | libnvdimm, pmem: use REQ_FUA, REQ_FLUSH for nvdimm_flush() (diff) | |
download | linux-476f848aaee466fd5d74f123fa652e757f2baeba.tar.xz linux-476f848aaee466fd5d74f123fa652e757f2baeba.zip |
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>
Diffstat (limited to 'drivers/nvdimm/pmem.c')
-rw-r--r-- | drivers/nvdimm/pmem.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 9d9c1beef020..8bfc6acc2e43 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -349,9 +349,16 @@ static int nd_pmem_remove(struct device *dev) { if (is_nd_btt(dev)) nvdimm_namespace_detach_btt(to_nd_btt(dev)); + nvdimm_flush(to_nd_region(dev->parent)); + return 0; } +static void nd_pmem_shutdown(struct device *dev) +{ + nvdimm_flush(to_nd_region(dev->parent)); +} + static void nd_pmem_notify(struct device *dev, enum nvdimm_event event) { struct pmem_device *pmem = dev_get_drvdata(dev); @@ -391,6 +398,7 @@ static struct nd_device_driver nd_pmem_driver = { .probe = nd_pmem_probe, .remove = nd_pmem_remove, .notify = nd_pmem_notify, + .shutdown = nd_pmem_shutdown, .drv = { .name = "nd_pmem", }, |