diff options
author | Goldwyn Rodrigues <rgoldwyn@suse.com> | 2017-06-20 07:05:45 -0500 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-06-20 07:12:03 -0600 |
commit | a38d1243704f501a4c42de1db1062ff6eba83453 (patch) | |
tree | a5dfc333eccc3ecb99b4bf5de17436215121c835 /fs/iomap.c | |
parent | 6be96d3ad34a124450028dabba43f07fe1d0c86d (diff) | |
download | lwn-a38d1243704f501a4c42de1db1062ff6eba83453.tar.gz lwn-a38d1243704f501a4c42de1db1062ff6eba83453.zip |
fs: Introduce IOMAP_NOWAIT
IOCB_NOWAIT translates to IOMAP_NOWAIT for iomaps.
This is used by XFS in the XFS patch.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'fs/iomap.c')
-rw-r--r-- | fs/iomap.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/iomap.c b/fs/iomap.c index 18f2f2b8ba2c..c71a64b97fba 100644 --- a/fs/iomap.c +++ b/fs/iomap.c @@ -881,6 +881,14 @@ iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter, flags |= IOMAP_WRITE; } + if (iocb->ki_flags & IOCB_NOWAIT) { + if (filemap_range_has_page(mapping, start, end)) { + ret = -EAGAIN; + goto out_free_dio; + } + flags |= IOMAP_NOWAIT; + } + ret = filemap_write_and_wait_range(mapping, start, end); if (ret) goto out_free_dio; |