From: Jan Kara <jack@suse.cz> To: linux-ext4@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.cz>, Ted Tso <tytso@mit.edu>, linux-nvdimm@lists.01.org Subject: [PATCH 02/11] ext4: Allow unaligned unlocked DAX IO Date: Tue, 1 Nov 2016 22:06:12 +0100 [thread overview] Message-ID: <1478034381-19037-3-git-send-email-jack@suse.cz> (raw) In-Reply-To: <1478034381-19037-1-git-send-email-jack@suse.cz> Currently we don't allow unaligned writes without inode_lock. This is because zeroing of partial blocks could cause data corruption for racing unaligned writes to the same block. However DAX handles zeroing during block allocation and thus zeroing of partial blocks cannot race. Allow DAX unaligned IO to run without inode_lock. Signed-off-by: Jan Kara <jack@suse.cz> --- fs/ext4/file.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/ext4/file.c b/fs/ext4/file.c index a6a7becb9465..55f8b922b76d 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -161,7 +161,8 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from) iocb->private = &overwrite; /* Check whether we do a DIO overwrite or not */ - if (o_direct && ext4_should_dioread_nolock(inode) && !unaligned_aio && + if (((o_direct && !unaligned_aio) || IS_DAX(inode)) && + ext4_should_dioread_nolock(inode) && ext4_overwrite_io(inode, iocb->ki_pos, iov_iter_count(from))) overwrite = 1; -- 2.6.6 _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz> To: linux-ext4@vger.kernel.org Cc: Ted Tso <tytso@mit.edu>, linux-fsdevel@vger.kernel.org, linux-nvdimm@lists.01.org, Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.cz> Subject: [PATCH 02/11] ext4: Allow unaligned unlocked DAX IO Date: Tue, 1 Nov 2016 22:06:12 +0100 [thread overview] Message-ID: <1478034381-19037-3-git-send-email-jack@suse.cz> (raw) In-Reply-To: <1478034381-19037-1-git-send-email-jack@suse.cz> Currently we don't allow unaligned writes without inode_lock. This is because zeroing of partial blocks could cause data corruption for racing unaligned writes to the same block. However DAX handles zeroing during block allocation and thus zeroing of partial blocks cannot race. Allow DAX unaligned IO to run without inode_lock. Signed-off-by: Jan Kara <jack@suse.cz> --- fs/ext4/file.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/ext4/file.c b/fs/ext4/file.c index a6a7becb9465..55f8b922b76d 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -161,7 +161,8 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from) iocb->private = &overwrite; /* Check whether we do a DIO overwrite or not */ - if (o_direct && ext4_should_dioread_nolock(inode) && !unaligned_aio && + if (((o_direct && !unaligned_aio) || IS_DAX(inode)) && + ext4_should_dioread_nolock(inode) && ext4_overwrite_io(inode, iocb->ki_pos, iov_iter_count(from))) overwrite = 1; -- 2.6.6
next prev parent reply other threads:[~2016-11-01 21:22 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-11-01 21:06 [PATCH 0/11] ext4: Convert ext4 DAX IO to iomap framework Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 01/11] ext4: Factor out checks from ext4_file_write_iter() Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-03 21:04 ` Ross Zwisler 2016-11-03 21:04 ` Ross Zwisler 2016-11-04 4:20 ` Jan Kara 2016-11-04 4:20 ` Jan Kara 2016-11-04 4:20 ` Jan Kara 2016-11-01 21:06 ` Jan Kara [this message] 2016-11-01 21:06 ` [PATCH 02/11] ext4: Allow unaligned unlocked DAX IO Jan Kara [not found] ` <1478034381-19037-3-git-send-email-jack-AlSwsSmVLrQ@public.gmane.org> 2016-11-02 14:27 ` Christoph Hellwig 2016-11-02 14:27 ` Christoph Hellwig 2016-11-03 23:55 ` Jan Kara 2016-11-01 21:06 ` [PATCH 03/11] ext4: Let S_DAX set only if DAX is really supported Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 04/11] ext4: Convert DAX reads to iomap infrastructure Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 05/11] ext4: Use iomap for zeroing blocks in DAX mode Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 06/11] ext4: DAX iomap write support Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 07/11] ext4: Avoid split extents for DAX writes Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 08/11] ext4: Convert DAX faults to iomap infrastructure Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-02 14:30 ` Christoph Hellwig [not found] ` <20161102143006.GB18387-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2016-11-04 0:02 ` Jan Kara 2016-11-04 0:02 ` Jan Kara 2016-11-01 21:06 ` [PATCH 09/11] ext4: Rip out DAX handling from direct IO path Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 10/11] ext2: Use iomap_zero_range() for zeroing truncated page in DAX path Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` [PATCH 11/11] dax: Rip out get_block based IO support Jan Kara 2016-11-01 21:06 ` Jan Kara 2016-11-01 21:06 ` Jan Kara [not found] ` <1478034381-19037-12-git-send-email-jack-AlSwsSmVLrQ@public.gmane.org> 2016-11-02 14:31 ` Christoph Hellwig 2016-11-02 14:31 ` Christoph Hellwig 2016-11-04 0:03 ` Jan Kara 2016-11-01 22:12 ` [PATCH 0/11] ext4: Convert ext4 DAX IO to iomap framework Dave Chinner 2016-11-01 22:12 ` Dave Chinner 2016-11-01 22:45 ` Ross Zwisler 2016-11-01 22:45 ` Ross Zwisler 2016-11-01 22:45 ` Ross Zwisler 2016-11-01 23:09 ` Jan Kara 2016-11-01 23:09 ` Jan Kara 2016-11-02 13:03 ` Theodore Ts'o 2016-11-02 22:23 ` Dave Chinner [not found] ` <20161102130353.nt3oqodrik4hnfk6-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org> 2016-11-04 0:55 ` Jan Kara 2016-11-04 0:55 ` 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=1478034381-19037-3-git-send-email-jack@suse.cz \ --to=jack@suse.cz \ --cc=david@fromorbit.com \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-nvdimm@lists.01.org \ --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.