]> git.openfabrics.org - ~shefty/rdma-dev.git/blobdiff - fs/btrfs/ordered-data.c
Btrfs: fix missing i_size update
[~shefty/rdma-dev.git] / fs / btrfs / ordered-data.c
index f107312970405da1e3218118a8d0555894955c59..fc6840b53d9d0f70bdefe376cabc95e521e3e320 100644 (file)
@@ -836,9 +836,16 @@ int btrfs_ordered_update_i_size(struct inode *inode, u64 offset,
         * if the disk i_size is already at the inode->i_size, or
         * this ordered extent is inside the disk i_size, we're done
         */
-       if (disk_i_size == i_size || offset <= disk_i_size) {
+       if (disk_i_size == i_size)
+               goto out;
+
+       /*
+        * We still need to update disk_i_size if outstanding_isize is greater
+        * than disk_i_size.
+        */
+       if (offset <= disk_i_size &&
+           (!ordered || ordered->outstanding_isize <= disk_i_size))
                goto out;
-       }
 
        /*
         * walk backward from this ordered extent to disk_i_size.