Btrfs: don't wait on uptodate buffers on read
authorChris Mason <chris.mason@oracle.com>
Tue, 3 Apr 2007 15:43:19 +0000 (11:43 -0400)
committerDavid Woodhouse <dwmw2@hera.kernel.org>
Tue, 3 Apr 2007 15:43:19 +0000 (11:43 -0400)
Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/disk-io.c

index 39b117a57a5476d5fcf5f2f285bf28a9942c246c..055cd45e802e0c794960d0ba3d72a826fdeb83b4 100644 (file)
@@ -214,6 +214,8 @@ struct buffer_head *read_tree_block(struct btrfs_root *root, u64 blocknr)
        bh = btrfs_find_create_tree_block(root, blocknr);
        if (!bh)
                return bh;
+       if (buffer_uptodate(bh))
+               goto uptodate;
        lock_buffer(bh);
        if (!buffer_uptodate(bh)) {
                get_bh(bh);
@@ -226,6 +228,7 @@ struct buffer_head *read_tree_block(struct btrfs_root *root, u64 blocknr)
        } else {
                unlock_buffer(bh);
        }
+uptodate:
        if (check_tree_block(root, bh))
                BUG();
        return bh;