From: Shiyang Ruan <ruansy.fnst@fujitsu.com> To: <linux-kernel@vger.kernel.org>, <linux-xfs@vger.kernel.org>, <linux-nvdimm@lists.01.org>, <linux-fsdevel@vger.kernel.org> Cc: <darrick.wong@oracle.com>, <dan.j.williams@intel.com>, <willy@infradead.org>, <jack@suse.cz>, <viro@zeniv.linux.org.uk>, <linux-btrfs@vger.kernel.org>, <david@fromorbit.com>, <hch@lst.de>, <rgoldwyn@suse.de>, Ritesh Harjani <riteshh@linux.ibm.com> Subject: [PATCH v3 3/3] fsdax: Output address in dax_iomap_pfn() and rename it Date: Thu, 22 Apr 2021 21:45:01 +0800 [thread overview] Message-ID: <20210422134501.1596266-4-ruansy.fnst@fujitsu.com> (raw) In-Reply-To: <20210422134501.1596266-1-ruansy.fnst@fujitsu.com> Add address output in dax_iomap_pfn() in order to perform a memcpy() in CoW case. Since this function both output address and pfn, rename it to dax_iomap_direct_access(). Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com> --- fs/dax.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/fs/dax.c b/fs/dax.c index f99e33de2036..48a97905c0c3 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -998,8 +998,8 @@ static sector_t dax_iomap_sector(struct iomap *iomap, loff_t pos) return (iomap->addr + (pos & PAGE_MASK) - iomap->offset) >> 9; } -static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, - pfn_t *pfnp) +static int dax_iomap_direct_access(struct iomap *iomap, loff_t pos, size_t size, + void **kaddr, pfn_t *pfnp) { const sector_t sector = dax_iomap_sector(iomap, pos); pgoff_t pgoff; @@ -1011,11 +1011,13 @@ static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, return rc; id = dax_read_lock(); length = dax_direct_access(iomap->dax_dev, pgoff, PHYS_PFN(size), - NULL, pfnp); + kaddr, pfnp); if (length < 0) { rc = length; goto out; } + if (!pfnp) + goto out_check_addr; rc = -EINVAL; if (PFN_PHYS(length) < size) goto out; @@ -1025,6 +1027,12 @@ static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, if (length > 1 && !pfn_t_devmap(*pfnp)) goto out; rc = 0; + +out_check_addr: + if (!kaddr) + goto out; + if (!*kaddr) + rc = -EFAULT; out: dax_read_unlock(id); return rc; @@ -1389,7 +1397,7 @@ static vm_fault_t dax_fault_actor(struct vm_fault *vmf, pfn_t *pfnp, return pmd ? VM_FAULT_FALLBACK : VM_FAULT_SIGBUS; } - err = dax_iomap_pfn(iomap, pos, size, &pfn); + err = dax_iomap_direct_access(iomap, pos, size, NULL, &pfn); if (err) return pmd ? VM_FAULT_FALLBACK : dax_fault_return(err); -- 2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Shiyang Ruan <ruansy.fnst@fujitsu.com> To: <linux-kernel@vger.kernel.org>, <linux-xfs@vger.kernel.org>, <linux-nvdimm@lists.01.org>, <linux-fsdevel@vger.kernel.org> Cc: darrick.wong@oracle.com, willy@infradead.org, jack@suse.cz, viro@zeniv.linux.org.uk, linux-btrfs@vger.kernel.org, david@fromorbit.com, hch@lst.de, rgoldwyn@suse.de Subject: [PATCH v3 3/3] fsdax: Output address in dax_iomap_pfn() and rename it Date: Thu, 22 Apr 2021 21:45:01 +0800 [thread overview] Message-ID: <20210422134501.1596266-4-ruansy.fnst@fujitsu.com> (raw) In-Reply-To: <20210422134501.1596266-1-ruansy.fnst@fujitsu.com> Add address output in dax_iomap_pfn() in order to perform a memcpy() in CoW case. Since this function both output address and pfn, rename it to dax_iomap_direct_access(). Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com> --- fs/dax.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/fs/dax.c b/fs/dax.c index f99e33de2036..48a97905c0c3 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -998,8 +998,8 @@ static sector_t dax_iomap_sector(struct iomap *iomap, loff_t pos) return (iomap->addr + (pos & PAGE_MASK) - iomap->offset) >> 9; } -static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, - pfn_t *pfnp) +static int dax_iomap_direct_access(struct iomap *iomap, loff_t pos, size_t size, + void **kaddr, pfn_t *pfnp) { const sector_t sector = dax_iomap_sector(iomap, pos); pgoff_t pgoff; @@ -1011,11 +1011,13 @@ static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, return rc; id = dax_read_lock(); length = dax_direct_access(iomap->dax_dev, pgoff, PHYS_PFN(size), - NULL, pfnp); + kaddr, pfnp); if (length < 0) { rc = length; goto out; } + if (!pfnp) + goto out_check_addr; rc = -EINVAL; if (PFN_PHYS(length) < size) goto out; @@ -1025,6 +1027,12 @@ static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, if (length > 1 && !pfn_t_devmap(*pfnp)) goto out; rc = 0; + +out_check_addr: + if (!kaddr) + goto out; + if (!*kaddr) + rc = -EFAULT; out: dax_read_unlock(id); return rc; @@ -1389,7 +1397,7 @@ static vm_fault_t dax_fault_actor(struct vm_fault *vmf, pfn_t *pfnp, return pmd ? VM_FAULT_FALLBACK : VM_FAULT_SIGBUS; } - err = dax_iomap_pfn(iomap, pos, size, &pfn); + err = dax_iomap_direct_access(iomap, pos, size, NULL, &pfn); if (err) return pmd ? VM_FAULT_FALLBACK : dax_fault_return(err); -- 2.31.1 _______________________________________________ Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org To unsubscribe send an email to linux-nvdimm-leave@lists.01.org
next prev parent reply other threads:[~2021-04-22 13:45 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-22 13:44 [PATCH v3 0/3] fsdax: Factor helper functions to simplify the code Shiyang Ruan 2021-04-22 13:44 ` Shiyang Ruan 2021-04-22 13:44 ` [PATCH v3 1/3] fsdax: Factor helpers to simplify dax fault code Shiyang Ruan 2021-04-22 13:44 ` Shiyang Ruan 2021-04-26 23:38 ` Ira Weiny 2021-04-26 23:38 ` Ira Weiny 2021-04-27 2:44 ` ruansy.fnst 2021-04-27 2:44 ` ruansy.fnst 2021-04-27 16:34 ` Ira Weiny 2021-04-27 16:34 ` Ira Weiny 2021-05-25 22:26 ` Darrick J. Wong 2021-04-22 13:45 ` [PATCH v3 2/3] fsdax: Factor helper: dax_fault_actor() Shiyang Ruan 2021-04-22 13:45 ` Shiyang Ruan 2021-05-25 23:11 ` Darrick J. Wong 2021-04-22 13:45 ` Shiyang Ruan [this message] 2021-04-22 13:45 ` [PATCH v3 3/3] fsdax: Output address in dax_iomap_pfn() and rename it Shiyang Ruan 2021-05-25 23:12 ` Darrick J. Wong 2021-05-08 5:26 ` [PATCH v3 0/3] fsdax: Factor helper functions to simplify the code ruansy.fnst 2021-05-08 5:26 ` ruansy.fnst 2021-05-14 10:23 ` ruansy.fnst 2021-05-14 10:23 ` ruansy.fnst 2021-06-03 22:37 ` Darrick J. Wong 2021-06-04 4:06 ` ruansy.fnst
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210422134501.1596266-4-ruansy.fnst@fujitsu.com \ --to=ruansy.fnst@fujitsu.com \ --cc=dan.j.williams@intel.com \ --cc=darrick.wong@oracle.com \ --cc=david@fromorbit.com \ --cc=hch@lst.de \ --cc=jack@suse.cz \ --cc=linux-btrfs@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --cc=linux-xfs@vger.kernel.org \ --cc=rgoldwyn@suse.de \ --cc=riteshh@linux.ibm.com \ --cc=viro@zeniv.linux.org.uk \ --cc=willy@infradead.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.