aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Moyer <jmoyer@redhat.com>2020-02-05 14:15:58 -0500
committerDan Williams <dan.j.williams@intel.com>2020-02-05 20:34:32 -0800
commit96222d53842dfe54869ec4e1b9d4856daf9105a2 (patch)
tree6e7f78500a7eddd4910b3246902f1a61fd2c1d07
parentf01b16a85bfae2e6b4f32de0a1f37ac4050dc316 (diff)
downloadlinux-96222d53842dfe54869ec4e1b9d4856daf9105a2.tar.gz
dax: pass NOWAIT flag to iomap_apply
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>
-rw-r--r--fs/dax.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/dax.c b/fs/dax.c
index 1a64c19de0ad0c..35da144375a0ad 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -1201,6 +1201,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);