From: Jan Kara <jack@suse.cz>
To: Ross Zwisler <ross.zwisler@linux.intel.com>
Cc: Christoph Hellwig <hch@infradead.org>,
Boaz Harrosh <boazh@netapp.com>, Jan Kara <jack@suse.cz>,
linux-nvdimm@lists.01.org, linux-xfs@vger.kernel.org,
Andy Lutomirski <luto@kernel.org>,
linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org
Subject: Re: [PATCH 11/13] dax, iomap: Add support for synchronous faults
Date: Tue, 22 Aug 2017 11:46:55 +0200 [thread overview]
Message-ID: <20170822094655.GE4909@quack2.suse.cz> (raw)
In-Reply-To: <20170821185830.GB26220@linux.intel.com>
On Mon 21-08-17 12:58:30, Ross Zwisler wrote:
> On Thu, Aug 17, 2017 at 06:08:13PM +0200, Jan Kara wrote:
> > Add a flag to iomap interface informing the caller that inode needs
> > fdstasync(2) for returned extent to become persistent and use it in DAX
> > fault code so that we map such extents only read only. We propagate the
> > information that the page table entry has been inserted write-protected
> > from dax_iomap_fault() with a new VM_FAULT_RO flag. Filesystem fault
> > handler is then responsible for calling fdatasync(2) and updating page
> > tables to map pfns read-write. dax_iomap_fault() also takes care of
> > updating vmf->orig_pte to match the PTE that was inserted so that we can
> > safely recheck that PTE did not change while write-enabling it.
>
> This changelog needs a little love. s/VM_FAULT_RO/VM_FAULT_NEEDDSYNC/, the
> new path doesn't do the RO mapping, but instead just does the entire RW
> mapping after the fdatasync is complete, the vmf->orig_pte manipulation went
> away, etc.
Yeah, fixed. Thanks for noticing.
> > Signed-off-by: Jan Kara <jack@suse.cz>
> > ---
> > fs/dax.c | 31 +++++++++++++++++++++++++++++++
> > include/linux/iomap.h | 2 ++
> > include/linux/mm.h | 6 +++++-
> > 3 files changed, 38 insertions(+), 1 deletion(-)
> >
> > diff --git a/fs/dax.c b/fs/dax.c
> > index bc040e654cc9..ca88fc356786 100644
> > --- a/fs/dax.c
> > +++ b/fs/dax.c
> > @@ -1177,6 +1177,22 @@ static int dax_iomap_pte_fault(struct vm_fault *vmf,
> > goto error_finish_iomap;
> > }
> >
> > + /*
> > + * If we are doing synchronous page fault and inode needs fsync,
> > + * we can insert PTE into page tables only after that happens.
> > + * Skip insertion for now and return the pfn so that caller can
> > + * insert it after fsync is done.
> > + */
> > + if (write && (vma->vm_flags & VM_SYNC) &&
> > + (iomap.flags & IOMAP_F_NEEDDSYNC)) {
>
> Just a small nit, but I don't think we really need to check for 'write' here.
> The fact that IOMAP_F_NEEDDSYNC is set tells us that we are doing a write.
>
> if ((flags & IOMAP_WRITE) &&
> !jbd2_transaction_committed(EXT4_SB(inode->i_sb)->s_journal,
> EXT4_I(inode)->i_datasync_tid))
> iomap->flags |= IOMAP_F_NEEDDSYNC;
>
> Ditto for the PMD case.
OK, done.
> With that one simplification and a cleaned up changelog, you can add:
>
> Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Thanks.
Honza
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2017-08-22 9:44 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-17 16:08 [RFC PATCH 0/13 v2] dax, ext4: Synchronous page faults Jan Kara
2017-08-17 16:08 ` [PATCH 01/13] mm: Remove VM_FAULT_HWPOISON_LARGE_MASK Jan Kara
2017-08-17 16:08 ` [PATCH 02/13] dax: Simplify arguments of dax_insert_mapping() Jan Kara
2017-08-17 16:08 ` [PATCH 03/13] dax: Factor out getting of pfn out of iomap Jan Kara
2017-08-18 22:06 ` Ross Zwisler
2017-08-23 18:30 ` Christoph Hellwig
2017-08-17 16:08 ` [PATCH 04/13] dax: Create local variable for VMA in dax_iomap_pte_fault() Jan Kara
2017-08-18 22:08 ` Ross Zwisler
2017-08-23 18:30 ` Christoph Hellwig
2017-08-17 16:08 ` [PATCH 05/13] dax: Create local variable for vmf->flags & FAULT_FLAG_WRITE test Jan Kara
2017-08-18 22:08 ` Ross Zwisler
2017-08-23 18:31 ` Christoph Hellwig
2017-08-17 16:08 ` [PATCH 06/13] dax: Inline dax_insert_mapping() into the callsite Jan Kara
2017-08-18 22:10 ` Ross Zwisler
2017-08-23 18:31 ` Christoph Hellwig
2017-08-17 16:08 ` [PATCH 07/13] dax: Inline dax_pmd_insert_mapping() " Jan Kara
2017-08-18 22:12 ` Ross Zwisler
2017-08-23 18:32 ` Christoph Hellwig
2017-08-17 16:08 ` [PATCH 08/13] dax: Fix comment describing dax_iomap_fault() Jan Kara
2017-08-18 22:12 ` Ross Zwisler
2017-08-23 18:32 ` Christoph Hellwig
2017-08-17 16:08 ` [PATCH 09/13] dax: Allow dax_iomap_fault() to return pfn Jan Kara
2017-08-21 18:45 ` Ross Zwisler
2017-08-23 18:34 ` Christoph Hellwig
2017-08-24 7:26 ` Jan Kara
2017-08-17 16:08 ` [PATCH 10/13] mm: Wire up MAP_SYNC Jan Kara
2017-08-21 21:37 ` Ross Zwisler
2017-08-22 9:36 ` Jan Kara
2017-08-21 21:57 ` Ross Zwisler
2017-08-22 9:34 ` Jan Kara
2017-08-22 17:27 ` Dan Williams
2017-08-23 18:43 ` Christoph Hellwig
2017-08-24 7:16 ` Jan Kara
2017-08-17 16:08 ` [PATCH 11/13] dax, iomap: Add support for synchronous faults Jan Kara
2017-08-21 18:58 ` Ross Zwisler
2017-08-22 9:46 ` Jan Kara [this message]
2017-08-21 21:09 ` Ross Zwisler
2017-08-22 10:08 ` Jan Kara
2017-08-24 12:27 ` Christoph Hellwig
2017-08-24 12:34 ` Jan Kara
2017-08-24 13:38 ` Christoph Hellwig
2017-08-24 16:45 ` Jan Kara
2017-08-17 16:08 ` [PATCH 12/13] dax: Implement dax_insert_pfn_mkwrite() Jan Kara
2017-08-21 19:01 ` Ross Zwisler
2017-08-17 16:08 ` [PATCH 13/13] ext4: Support for synchronous DAX faults Jan Kara
2017-08-21 19:19 ` Ross Zwisler
2017-08-22 10:18 ` Jan Kara
2017-08-23 18:37 ` Christoph Hellwig
2017-08-24 7:18 ` Jan Kara
2017-08-24 12:31 ` Christoph Hellwig
2017-08-24 12:34 ` Christoph Hellwig
2017-08-24 12:36 ` 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=20170822094655.GE4909@quack2.suse.cz \
--to=jack@suse.cz \
--cc=boazh@netapp.com \
--cc=hch@infradead.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-nvdimm@lists.01.org \
--cc=linux-xfs@vger.kernel.org \
--cc=luto@kernel.org \
--cc=ross.zwisler@linux.intel.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox