From: Jan Kara <jack@suse.cz> To: <linux-fsdevel@vger.kernel.org> Cc: <linux-ext4@vger.kernel.org>, <linux-xfs@vger.kernel.org>, Christoph Hellwig <hch@infradead.org>, Dan Williams <dan.j.williams@intel.com>, Ross Zwisler <ross.zwisler@linux.intel.com>, Ted Tso <tytso@mit.edu>, "Darrick J. Wong" <darrick.wong@oracle.com>, Jan Kara <jack@suse.cz> Subject: [PATCH 07/19] dax: Inline dax_insert_mapping() into the callsite Date: Wed, 11 Oct 2017 22:05:51 +0200 [thread overview] Message-ID: <20171011200603.27442-8-jack@suse.cz> (raw) In-Reply-To: <20171011200603.27442-1-jack@suse.cz> dax_insert_mapping() has only one callsite and we will need to further fine tune what it does for synchronous faults. Just inline it into the callsite so that we don't have to pass awkward bools around. Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Jan Kara <jack@suse.cz> --- fs/dax.c | 46 +++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/fs/dax.c b/fs/dax.c index 5ea71381dba0..5b20c6456926 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -858,32 +858,6 @@ static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, return rc; } -static int dax_insert_mapping(struct vm_fault *vmf, struct iomap *iomap, - loff_t pos, void *entry) -{ - const sector_t sector = dax_iomap_sector(iomap, pos); - struct vm_area_struct *vma = vmf->vma; - struct address_space *mapping = vma->vm_file->f_mapping; - unsigned long vaddr = vmf->address; - void *ret; - int rc; - pfn_t pfn; - - rc = dax_iomap_pfn(iomap, pos, PAGE_SIZE, &pfn); - if (rc < 0) - return rc; - - ret = dax_insert_mapping_entry(mapping, vmf, entry, sector, 0); - if (IS_ERR(ret)) - return PTR_ERR(ret); - - trace_dax_insert_mapping(mapping->host, vmf, ret); - if (vmf->flags & FAULT_FLAG_WRITE) - return vm_insert_mixed_mkwrite(vma, vaddr, pfn); - else - return vm_insert_mixed(vma, vaddr, pfn); -} - /* * The user has performed a load from a hole in the file. Allocating a new * page in the file would cause excessive storage usage for workloads with @@ -1119,6 +1093,7 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf, bool write = vmf->flags & FAULT_FLAG_WRITE; int vmf_ret = 0; void *entry; + pfn_t pfn; trace_dax_pte_fault(inode, vmf, vmf_ret); /* @@ -1201,7 +1176,24 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf, count_memcg_event_mm(vma->vm_mm, PGMAJFAULT); major = VM_FAULT_MAJOR; } - error = dax_insert_mapping(vmf, &iomap, pos, entry); + error = dax_iomap_pfn(&iomap, pos, PAGE_SIZE, &pfn); + if (error < 0) + goto error_finish_iomap; + + entry = dax_insert_mapping_entry(mapping, vmf, entry, + dax_iomap_sector(&iomap, pos), + 0); + if (IS_ERR(entry)) { + error = PTR_ERR(entry); + goto error_finish_iomap; + } + + trace_dax_insert_mapping(inode, vmf, entry); + if (write) + error = vm_insert_mixed_mkwrite(vma, vaddr, pfn); + else + error = vm_insert_mixed(vma, vaddr, pfn); + /* -EBUSY is fine, somebody else faulted on the same PTE */ if (error == -EBUSY) error = 0; -- 2.12.3
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz> To: linux-fsdevel@vger.kernel.org Cc: linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org, Christoph Hellwig <hch@infradead.org>, Dan Williams <dan.j.williams@intel.com>, Ross Zwisler <ross.zwisler@linux.intel.com>, Ted Tso <tytso@mit.edu>, "Darrick J. Wong" <darrick.wong@oracle.com>, Jan Kara <jack@suse.cz> Subject: [PATCH 07/19] dax: Inline dax_insert_mapping() into the callsite Date: Wed, 11 Oct 2017 22:05:51 +0200 [thread overview] Message-ID: <20171011200603.27442-8-jack@suse.cz> (raw) In-Reply-To: <20171011200603.27442-1-jack@suse.cz> dax_insert_mapping() has only one callsite and we will need to further fine tune what it does for synchronous faults. Just inline it into the callsite so that we don't have to pass awkward bools around. Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com> Signed-off-by: Jan Kara <jack@suse.cz> --- fs/dax.c | 46 +++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/fs/dax.c b/fs/dax.c index 5ea71381dba0..5b20c6456926 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -858,32 +858,6 @@ static int dax_iomap_pfn(struct iomap *iomap, loff_t pos, size_t size, return rc; } -static int dax_insert_mapping(struct vm_fault *vmf, struct iomap *iomap, - loff_t pos, void *entry) -{ - const sector_t sector = dax_iomap_sector(iomap, pos); - struct vm_area_struct *vma = vmf->vma; - struct address_space *mapping = vma->vm_file->f_mapping; - unsigned long vaddr = vmf->address; - void *ret; - int rc; - pfn_t pfn; - - rc = dax_iomap_pfn(iomap, pos, PAGE_SIZE, &pfn); - if (rc < 0) - return rc; - - ret = dax_insert_mapping_entry(mapping, vmf, entry, sector, 0); - if (IS_ERR(ret)) - return PTR_ERR(ret); - - trace_dax_insert_mapping(mapping->host, vmf, ret); - if (vmf->flags & FAULT_FLAG_WRITE) - return vm_insert_mixed_mkwrite(vma, vaddr, pfn); - else - return vm_insert_mixed(vma, vaddr, pfn); -} - /* * The user has performed a load from a hole in the file. Allocating a new * page in the file would cause excessive storage usage for workloads with @@ -1119,6 +1093,7 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf, bool write = vmf->flags & FAULT_FLAG_WRITE; int vmf_ret = 0; void *entry; + pfn_t pfn; trace_dax_pte_fault(inode, vmf, vmf_ret); /* @@ -1201,7 +1176,24 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf, count_memcg_event_mm(vma->vm_mm, PGMAJFAULT); major = VM_FAULT_MAJOR; } - error = dax_insert_mapping(vmf, &iomap, pos, entry); + error = dax_iomap_pfn(&iomap, pos, PAGE_SIZE, &pfn); + if (error < 0) + goto error_finish_iomap; + + entry = dax_insert_mapping_entry(mapping, vmf, entry, + dax_iomap_sector(&iomap, pos), + 0); + if (IS_ERR(entry)) { + error = PTR_ERR(entry); + goto error_finish_iomap; + } + + trace_dax_insert_mapping(inode, vmf, entry); + if (write) + error = vm_insert_mixed_mkwrite(vma, vaddr, pfn); + else + error = vm_insert_mixed(vma, vaddr, pfn); + /* -EBUSY is fine, somebody else faulted on the same PTE */ if (error == -EBUSY) error = 0; -- 2.12.3
next prev parent reply other threads:[~2017-10-11 20:06 UTC|newest] Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-10-11 20:05 [PATCH 0/19 v3] dax, ext4, xfs: Synchronous page faults Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 01/19] mm: introduce MAP_SHARED_VALIDATE, a mechanism to safely define new mmap flags Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-13 7:12 ` Christoph Hellwig 2017-10-13 15:44 ` Dan Williams 2017-10-13 18:28 ` Dan Williams 2017-10-14 15:57 ` Williams, Dan J 2017-10-16 7:45 ` hch 2017-10-17 11:50 ` Jan Kara 2017-10-17 19:38 ` Dan Williams 2017-10-18 6:59 ` hch 2017-10-11 20:05 ` [PATCH 02/19] mm: Remove VM_FAULT_HWPOISON_LARGE_MASK Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 03/19] dax: Simplify arguments of dax_insert_mapping() Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 04/19] dax: Factor out getting of pfn out of iomap Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 05/19] dax: Create local variable for VMA in dax_iomap_pte_fault() Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 06/19] dax: Create local variable for vmf->flags & FAULT_FLAG_WRITE test Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` Jan Kara [this message] 2017-10-11 20:05 ` [PATCH 07/19] dax: Inline dax_insert_mapping() into the callsite Jan Kara 2017-10-11 20:05 ` [PATCH 08/19] dax: Inline dax_pmd_insert_mapping() " Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 09/19] dax: Fix comment describing dax_iomap_fault() Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 10/19] dax: Allow dax_iomap_fault() to return pfn Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-11 20:05 ` [PATCH 11/19] dax: Allow tuning whether dax_insert_mapping_entry() dirties entry Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-13 7:12 ` Christoph Hellwig 2017-10-13 19:26 ` Ross Zwisler 2017-10-11 20:05 ` [PATCH 12/19] mm: Define MAP_SYNC and VM_SYNC flags Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-13 7:12 ` Christoph Hellwig 2017-10-13 19:44 ` Ross Zwisler 2017-10-16 15:37 ` Jan Kara 2017-10-11 20:05 ` [PATCH 13/19] dax, iomap: Add support for synchronous faults Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-13 7:14 ` Christoph Hellwig 2017-10-11 20:05 ` [PATCH 14/19] dax: Implement dax_finish_sync_fault() Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-13 7:21 ` Christoph Hellwig 2017-10-16 15:43 ` Jan Kara 2017-10-13 20:06 ` Ross Zwisler 2017-10-11 20:05 ` [PATCH 15/19] ext4: Simplify error handling in ext4_dax_huge_fault() Jan Kara 2017-10-11 20:05 ` Jan Kara 2017-10-13 20:09 ` Ross Zwisler 2017-10-11 20:06 ` [PATCH 16/19] ext4: Support for synchronous DAX faults Jan Kara 2017-10-11 20:06 ` Jan Kara 2017-10-11 22:23 ` Dan Williams 2017-10-12 13:42 ` Jan Kara 2017-10-13 20:58 ` Ross Zwisler 2017-10-16 15:50 ` Jan Kara 2017-10-11 20:06 ` [PATCH 17/19] ext4: Add support for MAP_SYNC flag Jan Kara 2017-10-11 20:06 ` Jan Kara 2017-10-11 22:11 ` Dan Williams 2017-10-12 13:42 ` Jan Kara 2017-10-13 0:23 ` Dan Williams 2017-10-13 7:22 ` Christoph Hellwig 2017-10-13 15:52 ` Dan Williams 2017-10-17 11:30 ` Jan Kara 2017-10-13 7:21 ` Christoph Hellwig 2017-10-16 15:14 ` Jan Kara 2017-10-11 20:06 ` [PATCH 18/19] xfs: support for synchronous DAX faults Jan Kara 2017-10-11 20:06 ` Jan Kara 2017-10-11 20:06 ` [PATCH 19/19] xfs: Add support for MAP_SYNC flag Jan Kara 2017-10-11 20:06 ` Jan Kara 2017-10-11 22:54 ` Dan Williams 2017-10-11 23:02 ` Dan Williams 2017-10-13 7:28 ` Christoph Hellwig 2017-10-11 21:18 ` [PATCH 0/19 v3] dax, ext4, xfs: Synchronous page faults Dan Williams 2017-10-11 22:43 ` Dave Chinner 2017-10-12 1:18 ` Dan Williams 2017-10-13 22:53 ` Ross Zwisler 2017-10-16 15:12 ` Jan Kara
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=20171011200603.27442-8-jack@suse.cz \ --to=jack@suse.cz \ --cc=dan.j.williams@intel.com \ --cc=darrick.wong@oracle.com \ --cc=hch@infradead.org \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-xfs@vger.kernel.org \ --cc=ross.zwisler@linux.intel.com \ --cc=tytso@mit.edu \ /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.