| From 9ff7c42d8e6cefa882fec526eb899d9d1278c54d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 5 Feb 2020 14:15:58 -0500 |
| Subject: dax: pass NOWAIT flag to iomap_apply |
| |
| From: Jeff Moyer <jmoyer@redhat.com> |
| |
| [ Upstream commit 96222d53842dfe54869ec4e1b9d4856daf9105a2 ] |
| |
| fstests generic/471 reports a failure when run with MOUNT_OPTIONS="-o |
| dax". The reason is that the initial pwrite to an empty file with the |
| RWF_NOWAIT flag set does not return -EAGAIN. It turns out that |
| dax_iomap_rw doesn't pass that flag through to iomap_apply. |
| |
| With this patch applied, generic/471 passes for me. |
| |
| Signed-off-by: Jeff Moyer <jmoyer@redhat.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Reviewed-by: Jan Kara <jack@suse.cz> |
| Link: https://lore.kernel.org/r/x49r1z86e1d.fsf@segfault.boston.devel.redhat.com |
| Signed-off-by: Dan Williams <dan.j.williams@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/dax.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/fs/dax.c b/fs/dax.c |
| index 1f1f0201cad18..0b0d8819cb1bb 100644 |
| --- a/fs/dax.c |
| +++ b/fs/dax.c |
| @@ -1207,6 +1207,9 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, |
| lockdep_assert_held(&inode->i_rwsem); |
| } |
| |
| + if (iocb->ki_flags & IOCB_NOWAIT) |
| + flags |= IOMAP_NOWAIT; |
| + |
| while (iov_iter_count(iter)) { |
| ret = iomap_apply(inode, pos, iov_iter_count(iter), flags, ops, |
| iter, dax_iomap_actor); |
| -- |
| 2.20.1 |
| |