diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 94bed61b799f..6526f1faf6c2 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -7087,8 +7087,10 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans, | |||
7087 | if (reada && level == 1) | 7087 | if (reada && level == 1) |
7088 | reada_walk_down(trans, root, wc, path); | 7088 | reada_walk_down(trans, root, wc, path); |
7089 | next = read_tree_block(root, bytenr, blocksize, generation); | 7089 | next = read_tree_block(root, bytenr, blocksize, generation); |
7090 | if (!next) | 7090 | if (!next || !extent_buffer_uptodate(next)) { |
7091 | free_extent_buffer(next); | ||
7091 | return -EIO; | 7092 | return -EIO; |
7093 | } | ||
7092 | btrfs_tree_lock(next); | 7094 | btrfs_tree_lock(next); |
7093 | btrfs_set_lock_blocking(next); | 7095 | btrfs_set_lock_blocking(next); |
7094 | } | 7096 | } |