summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2007-05-18 13:28:27 -0400
committerDavid Woodhouse <dwmw2@hera.kernel.org>2007-05-18 13:28:27 -0400
commitde428b63b16f9c74a24228a517713e8c65f79475 (patch)
tree0bb56423173f59e6237cf0cbc8052f72fb997347 /fs/btrfs/disk-io.c
parent098f59c2512426926722a96f82af127bd91fb5e4 (diff)
downloadtalos-op-linux-de428b63b16f9c74a24228a517713e8c65f79475.tar.gz
talos-op-linux-de428b63b16f9c74a24228a517713e8c65f79475.zip
Btrfs: allocator optimizations, truncate readahead
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r--fs/btrfs/disk-io.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 678456d1e2f9..4c0262b57664 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -257,24 +257,30 @@ static struct address_space_operations btree_aops = {
int readahead_tree_block(struct btrfs_root *root, u64 blocknr)
{
struct buffer_head *bh = NULL;
+ int ret = 0;
bh = btrfs_find_create_tree_block(root, blocknr);
if (!bh)
return 0;
- if (buffer_uptodate(bh))
+ if (buffer_uptodate(bh)) {
+ ret = 1;
goto done;
- if (test_set_buffer_locked(bh))
+ }
+ if (test_set_buffer_locked(bh)) {
+ ret = 1;
goto done;
+ }
if (!buffer_uptodate(bh)) {
get_bh(bh);
bh->b_end_io = end_buffer_read_sync;
submit_bh(READ, bh);
} else {
unlock_buffer(bh);
+ ret = 1;
}
done:
brelse(bh);
- return 0;
+ return ret;
}
struct buffer_head *read_tree_block(struct btrfs_root *root, u64 blocknr)
OpenPOWER on IntegriCloud