From 11800acce12750b74ce0ace6180949a14a1758a9 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Wed, 30 Jan 2013 14:17:31 -0500 Subject: [PATCH] --- yaml --- r: 349605 b: refs/heads/master c: 5d1f40202bad12d4c70a2d40a420b30d23a72b1a h: refs/heads/master i: 349603: fefd6fa29426e8f9c86cef09c5bbf3b9782aa1d2 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ordered-data.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 2591ec9c3335..c8c9dc61c920 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6f1c36055f96e80031c7fdda3fd5be826b8d7782 +refs/heads/master: 5d1f40202bad12d4c70a2d40a420b30d23a72b1a diff --git a/trunk/fs/btrfs/ordered-data.c b/trunk/fs/btrfs/ordered-data.c index f10731297040..fc6840b53d9d 100644 --- a/trunk/fs/btrfs/ordered-data.c +++ b/trunk/fs/btrfs/ordered-data.c @@ -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.