aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/ctree.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/ctree.c')
-rw-r--r--fs/btrfs/ctree.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index 0f11ebc92f02..54114b4887dd 100644
--- a/fs/btrfs/ctree.c
+++ b/fs/btrfs/ctree.c
@@ -1439,8 +1439,9 @@ get_old_root(struct btrfs_root *root, u64 time_seq)
1439 btrfs_tree_read_unlock(eb_root); 1439 btrfs_tree_read_unlock(eb_root);
1440 free_extent_buffer(eb_root); 1440 free_extent_buffer(eb_root);
1441 old = read_tree_block(root, logical, 0); 1441 old = read_tree_block(root, logical, 0);
1442 if (WARN_ON(!old || !extent_buffer_uptodate(old))) { 1442 if (WARN_ON(IS_ERR(old) || !extent_buffer_uptodate(old))) {
1443 free_extent_buffer(old); 1443 if (!IS_ERR(old))
1444 free_extent_buffer(old);
1444 btrfs_warn(root->fs_info, 1445 btrfs_warn(root->fs_info,
1445 "failed to read tree block %llu from get_old_root", logical); 1446 "failed to read tree block %llu from get_old_root", logical);
1446 } else { 1447 } else {
@@ -1685,7 +1686,9 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans,
1685 if (!cur || !uptodate) { 1686 if (!cur || !uptodate) {
1686 if (!cur) { 1687 if (!cur) {
1687 cur = read_tree_block(root, blocknr, gen); 1688 cur = read_tree_block(root, blocknr, gen);
1688 if (!cur || !extent_buffer_uptodate(cur)) { 1689 if (IS_ERR(cur)) {
1690 return PTR_ERR(cur);
1691 } else if (!extent_buffer_uptodate(cur)) {
1689 free_extent_buffer(cur); 1692 free_extent_buffer(cur);
1690 return -EIO; 1693 return -EIO;
1691 } 1694 }
@@ -1864,8 +1867,9 @@ static noinline struct extent_buffer *read_node_slot(struct btrfs_root *root,
1864 1867
1865 eb = read_tree_block(root, btrfs_node_blockptr(parent, slot), 1868 eb = read_tree_block(root, btrfs_node_blockptr(parent, slot),
1866 btrfs_node_ptr_generation(parent, slot)); 1869 btrfs_node_ptr_generation(parent, slot));
1867 if (eb && !extent_buffer_uptodate(eb)) { 1870 if (IS_ERR(eb) || !extent_buffer_uptodate(eb)) {
1868 free_extent_buffer(eb); 1871 if (!IS_ERR(eb))
1872 free_extent_buffer(eb);
1869 eb = NULL; 1873 eb = NULL;
1870 } 1874 }
1871 1875
@@ -2494,7 +2498,7 @@ read_block_for_search(struct btrfs_trans_handle *trans,
2494 2498
2495 ret = -EAGAIN; 2499 ret = -EAGAIN;
2496 tmp = read_tree_block(root, blocknr, 0); 2500 tmp = read_tree_block(root, blocknr, 0);
2497 if (tmp) { 2501 if (!IS_ERR(tmp)) {
2498 /* 2502 /*
2499 * If the read above didn't mark this buffer up to date, 2503 * If the read above didn't mark this buffer up to date,
2500 * it will never end up being up to date. Set ret to EIO now 2504 * it will never end up being up to date. Set ret to EIO now