diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2014-03-06 13:54:58 +0800 |
---|---|---|
committer | Josef Bacik <jbacik@fb.com> | 2014-03-10 15:17:25 -0400 |
commit | b88935bf9822cda58fd70dffe8e016d448757d40 (patch) | |
tree | 2343f36a899f784c8d6dddce08cfb73ac2ef81b1 /fs/btrfs/file.c | |
parent | 41bd9ca459a007cc5588563bb08de9677c8d23fd (diff) | |
download | op-kernel-dev-b88935bf9822cda58fd70dffe8e016d448757d40.zip op-kernel-dev-b88935bf9822cda58fd70dffe8e016d448757d40.tar.gz |
Btrfs: remove the unnecessary flush when preparing the pages
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r-- | fs/btrfs/file.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 006cf9f..b2143b8 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1360,11 +1360,11 @@ lock_and_cleanup_extent_if_need(struct inode *inode, struct page **pages, struct btrfs_ordered_extent *ordered; lock_extent_bits(&BTRFS_I(inode)->io_tree, start_pos, last_pos, 0, cached_state); - ordered = btrfs_lookup_first_ordered_extent(inode, last_pos); + ordered = btrfs_lookup_ordered_range(inode, start_pos, + last_pos - start_pos + 1); if (ordered && ordered->file_offset + ordered->len > start_pos && ordered->file_offset <= last_pos) { - btrfs_put_ordered_extent(ordered); unlock_extent_cached(&BTRFS_I(inode)->io_tree, start_pos, last_pos, cached_state, GFP_NOFS); @@ -1372,12 +1372,9 @@ lock_and_cleanup_extent_if_need(struct inode *inode, struct page **pages, unlock_page(pages[i]); page_cache_release(pages[i]); } - ret = btrfs_wait_ordered_range(inode, start_pos, - last_pos - start_pos + 1); - if (ret) - return ret; - else - return -EAGAIN; + btrfs_start_ordered_extent(inode, ordered, 1); + btrfs_put_ordered_extent(ordered); + return -EAGAIN; } if (ordered) btrfs_put_ordered_extent(ordered); |