Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1242494imm; Wed, 4 Jul 2018 14:52:06 -0700 (PDT) X-Google-Smtp-Source: AAOMgpe2CXK3TQHZmUt6ytriexDk4cOA2+dtPVRlOFbniX1E+717Uu4jyUz55ew1o+GQ3yotYNMy X-Received: by 2002:a17:902:76c4:: with SMTP id j4-v6mr3562061plt.19.1530741126700; Wed, 04 Jul 2018 14:52:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530741126; cv=none; d=google.com; s=arc-20160816; b=m45wZz3kbt4y8OgXOzFDqmUoF+VaZuFNWoaepV21IU+wHDAzMhM6cEBZlZVrCR1wBd KEETLPZiK6nMXeaozeFcmKXlsNgQKvDe6E+r3uewR7StDGuvPBKg9T+t5bhK7JVcclYo R5Vifzph3FBbkRWtH85eg4zsjGMRoUaz+18QEZSeBHLgOUwwZXtt7fH6UAheAnqrWT/N pDbaTt2lhIZIaxeBDMbrwCHQRFrbCrw0Llooj92P1/KEFwf8XVwsPefd0sliaaQMZ4Zr KE3MNHKfEqQs1XiU0SFhv7dJNC2Q/iqzhZS/HP4dG8W6E3Te1po9fWf336UboN4F+ESD PhEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:cc:to:from :subject:arc-authentication-results; bh=EQDufybVCAJcCn6LK6mWfblSUCoXXSZOigO5JO3c188=; b=rAIBgZdttnotbJaRnGYJCmtA5mz0owJjl3jdssB4IrpBIsrUcVBPVJc0ADATIbpewR NLl+lrBfhCEVGVB9O7oS0CpV3UPzh2snd0d+scnaQ2AorZ5nL0OGlI8pIOZ0QQTEXbjT a1KVRAXy+TyOPQDeQKv7stRHVPAxnlAKivr4sA02BVQDHV4JtHY3sPe0EYuHrExTaSlu H9OxiNZNypeMGx9iK3fK1jCrWav6I5APZFsApl8EADvDO3JQqeM2eqG0PyXFkIXRUr0C n8HjgjBVsOdBMr4W+OH/7CXg3k7e/tMShZZ7ti9+bMARoI59etHxF8SABiYc6ca42Kly hq8w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p5-v6si4264096pls.53.2018.07.04.14.51.52; Wed, 04 Jul 2018 14:52:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753323AbeGDVut (ORCPT + 99 others); Wed, 4 Jul 2018 17:50:49 -0400 Received: from mga06.intel.com ([134.134.136.31]:59734 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752933AbeGDVuq (ORCPT ); Wed, 4 Jul 2018 17:50:46 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jul 2018 14:50:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,309,1526367600"; d="scan'208";a="52057511" Received: from dwillia2-desk3.jf.intel.com (HELO dwillia2-desk3.amr.corp.intel.com) ([10.54.39.16]) by fmsmga007.fm.intel.com with ESMTP; 04 Jul 2018 14:50:36 -0700 Subject: [PATCH v5 03/11] device-dax: Set page->index From: Dan Williams To: linux-nvdimm@lists.01.org Cc: Jan Kara , hch@lst.de, hch@lst.de, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, jack@suse.cz, ross.zwisler@linux.intel.com Date: Wed, 04 Jul 2018 14:40:39 -0700 Message-ID: <153074043918.27838.10612469015732111514.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: <153074042316.27838.17319837331947007626.stgit@dwillia2-desk3.amr.corp.intel.com> References: <153074042316.27838.17319837331947007626.stgit@dwillia2-desk3.amr.corp.intel.com> User-Agent: StGit/0.18-2-gc94f MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In support of enabling memory_failure() handling for device-dax mappings, set ->index to the pgoff of the page. The rmap implementation requires ->index to bound the search through the vma interval tree. The ->index value is never cleared. There is no possibility for the page to become associated with another pgoff while the device is enabled. When the device is disabled the 'struct page' array for the device is destroyed and ->index is reinitialized to zero. Reviewed-by: Jan Kara Signed-off-by: Dan Williams --- drivers/dax/device.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/dax/device.c b/drivers/dax/device.c index 95cfcfd612df..361a11089591 100644 --- a/drivers/dax/device.c +++ b/drivers/dax/device.c @@ -416,6 +416,7 @@ static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf, if (rc == VM_FAULT_NOPAGE) { unsigned long i; + pgoff_t pgoff; /* * In the device-dax case the only possibility for a @@ -423,6 +424,8 @@ static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf, * mapped. No need to consider the zero page, or racing * conflicting mappings. */ + pgoff = linear_page_index(vmf->vma, vmf->address + & ~(fault_size - 1)); for (i = 0; i < fault_size / PAGE_SIZE; i++) { struct page *page; @@ -430,6 +433,7 @@ static vm_fault_t dev_dax_huge_fault(struct vm_fault *vmf, if (page->mapping) continue; page->mapping = filp->f_mapping; + page->index = pgoff + i; } } dax_read_unlock(id);