summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2016-08-17 08:41:10 +1000
committerDave Chinner <david@fromorbit.com>2016-08-17 08:41:10 +1000
commit8896b8f60951ff0a8b7092f495a445714a1bddc4 (patch)
tree2679e5c31f31e9168da223b8c016bba2b29cbe96
parent274c887494cb248eb05f8180bda8298942d98625 (diff)
downloadlinux-8896b8f60951ff0a8b7092f495a445714a1bddc4.tar.bz2
iomap: fiemap should honor the FIEMAP_FLAG_SYNC flag
The flag is checked as supported, but then we do an unconditional sync of the file, regardless of whether the flag is set or not. Make the sync conditional on having the FIEMAP_FLAG_SYNC flag set. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Dave Chinner <david@fromorbit.com>
-rw-r--r--fs/iomap.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/iomap.c b/fs/iomap.c
index 74712e25184b..56c19e617a26 100644
--- a/fs/iomap.c
+++ b/fs/iomap.c
@@ -467,9 +467,11 @@ int iomap_fiemap(struct inode *inode, struct fiemap_extent_info *fi,
if (ret)
return ret;
- ret = filemap_write_and_wait(inode->i_mapping);
- if (ret)
- return ret;
+ if (fi->fi_flags & FIEMAP_FLAG_SYNC) {
+ ret = filemap_write_and_wait(inode->i_mapping);
+ if (ret)
+ return ret;
+ }
while (len > 0) {
ret = iomap_apply(inode, start, len, 0, ops, &ctx,