iomap: fiemap should honor the FIEMAP_FLAG_SYNC flag
authorDave Chinner <dchinner@redhat.com>
Tue, 16 Aug 2016 22:41:10 +0000 (08:41 +1000)
committerDave Chinner <david@fromorbit.com>
Tue, 16 Aug 2016 22:41:10 +0000 (08:41 +1000)
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>
fs/iomap.c

index 74712e25184ba421a19034dfd832b1ddd5aa49cb..56c19e617a265370cb395e939e78f1772eb49f10 100644 (file)
@@ -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,