From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752913AbbIPUwa (ORCPT ); Wed, 16 Sep 2015 16:52:30 -0400 Received: from mga11.intel.com ([192.55.52.93]:55946 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752220AbbIPUw3 (ORCPT ); Wed, 16 Sep 2015 16:52:29 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.17,541,1437462000"; d="scan'208";a="805970002" From: Ross Zwisler To: linux-kernel@vger.kernel.org Cc: Ross Zwisler , Dan Williams , linux-nvdimm@ml01.01.org Subject: [PATCH] pmem: add proper synchronization to pmem_rw_page() Date: Wed, 16 Sep 2015 14:52:21 -0600 Message-Id: <1442436741-32112-1-git-send-email-ross.zwisler@linux.intel.com> X-Mailer: git-send-email 2.1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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") but it looks like the pmem_rw_page() path was missed. Signed-off-by: Ross Zwisler --- drivers/nvdimm/pmem.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index b952538..0ba6a97 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; -- 2.1.0