From 2d8283e02cf4580039895cc4659ce03fb822d82d Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Mon, 23 Apr 2012 14:41:09 -0400 Subject: [PATCH] --- yaml --- r: 309879 b: refs/heads/master c: 551ebb2d34304ee2abfe6b00d39ec65d5e4e8266 h: refs/heads/master i: 309877: 38b7419f3ced164ca37cb4370b04fe1eefd49bf0 309875: f44f177b67afb0448efe025c666bbd2b64cb1181 309871: 64134db5640794563e2dc5758b1df3177e02a1f9 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ordered-data.c | 17 ++--------------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index 4b5a70ec24a8..391afa4a97bc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d7dbe9e7f64e72ec6548658857c5d92327a73633 +refs/heads/master: 551ebb2d34304ee2abfe6b00d39ec65d5e4e8266 diff --git a/trunk/fs/btrfs/ordered-data.c b/trunk/fs/btrfs/ordered-data.c index bbf6d0d9aebe..9807750c6255 100644 --- a/trunk/fs/btrfs/ordered-data.c +++ b/trunk/fs/btrfs/ordered-data.c @@ -621,19 +621,11 @@ void btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len) if (orig_end > INT_LIMIT(loff_t)) orig_end = INT_LIMIT(loff_t); } -again: + /* start IO across the range first to instantiate any delalloc * extents */ - filemap_fdatawrite_range(inode->i_mapping, start, orig_end); - - /* The compression code will leave pages locked but return from - * writepage without setting the page writeback. Starting again - * with WB_SYNC_ALL will end up waiting for the IO to actually start. - */ - filemap_fdatawrite_range(inode->i_mapping, start, orig_end); - - filemap_fdatawait_range(inode->i_mapping, start, orig_end); + filemap_write_and_wait_range(inode->i_mapping, start, orig_end); end = orig_end; found = 0; @@ -657,11 +649,6 @@ void btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len) break; end--; } - if (found || test_range_bit(&BTRFS_I(inode)->io_tree, start, orig_end, - EXTENT_DELALLOC, 0, NULL)) { - schedule_timeout(1); - goto again; - } } /*