Btrfs: correctly flush data on defrag when compression is enabled
[deliverable/linux.git] / fs / btrfs / ioctl.c
index d4c17950277595eb353cd7169d91414bf859ef62..f914b5db7ff16d33d7a75cb40db1278718e22053 100644 (file)
@@ -1382,8 +1382,12 @@ int btrfs_defrag_file(struct inode *inode, struct file *file,
                }
        }
 
-       if ((range->flags & BTRFS_DEFRAG_RANGE_START_IO))
+       if ((range->flags & BTRFS_DEFRAG_RANGE_START_IO)) {
                filemap_flush(inode->i_mapping);
+               if (test_bit(BTRFS_INODE_HAS_ASYNC_EXTENT,
+                            &BTRFS_I(inode)->runtime_flags))
+                       filemap_flush(inode->i_mapping);
+       }
 
        if ((range->flags & BTRFS_DEFRAG_RANGE_COMPRESS)) {
                /* the filemap_flush will queue IO into the worker threads, but
This page took 0.025954 seconds and 5 git commands to generate.