Btrfs: remove the unnecessary flush when preparing the pages
authorMiao Xie <miaox@cn.fujitsu.com>
Thu, 6 Mar 2014 05:54:58 +0000 (13:54 +0800)
committerJosef Bacik <jbacik@fb.com>
Mon, 10 Mar 2014 19:17:25 +0000 (15:17 -0400)
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fb.com>
fs/btrfs/file.c

index 006cf9f0e8520b5ee935387a97aa956b44dd2311..b2143b8c33c577528bb0133c923662818e74d382 100644 (file)
@@ -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);