summaryrefslogtreecommitdiffstats
path: root/drivers/nvdimm
diff options
context:
space:
mode:
authorRoss Zwisler <ross.zwisler@linux.intel.com>2015-09-16 14:52:21 -0600
committerDan Williams <dan.j.williams@intel.com>2015-09-17 11:49:28 -0400
commitba8fe0f85e15d047686caf8a42463b592c63c98c (patch)
tree0bf1aaad533b1960f6aea534e879f74043e70cf0 /drivers/nvdimm
parent4ca8b57a0af145f4e791f21dbca6ad789da9ee8b (diff)
downloadlinux-ba8fe0f85e15d047686caf8a42463b592c63c98c.tar.gz
linux-ba8fe0f85e15d047686caf8a42463b592c63c98c.tar.bz2
linux-ba8fe0f85e15d047686caf8a42463b592c63c98c.zip
pmem: add proper fencing to pmem_rw_page()
pmem_rw_page() needs to call wmb_pmem() on writes to make sure that the newly written data is durable. This flow was added to pmem_rw_bytes() and pmem_make_request() with this commit: commit 61031952f4c8 ("arch, x86: pmem api for ensuring durability of persistent memory updates") ...the pmem_rw_page() path was missed. Cc: <stable@vger.kernel.org> Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/nvdimm')
-rw-r--r--drivers/nvdimm/pmem.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index b9525385c0dc..0ba6a978f227 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -92,6 +92,8 @@ static int pmem_rw_page(struct block_device *bdev, sector_t sector,
struct pmem_device *pmem = bdev->bd_disk->private_data;
pmem_do_bvec(pmem, page, PAGE_CACHE_SIZE, 0, rw, sector);
+ if (rw & WRITE)
+ wmb_pmem();
page_endio(page, rw & WRITE, 0);
return 0;