Btrfs: Fix oopsen when dropping empty tree.
When dropping a empty tree, walk_down_tree() skips checking extent information for the tree root. This will triggers a BUG_ON in walk_up_proc(). Signed-off-by: Yan Zheng <zheng.yan@oracle.com> Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
@@ -5402,10 +5402,6 @@ static noinline int walk_down_tree(struct btrfs_trans_handle *trans,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
while (level >= 0) {
|
while (level >= 0) {
|
||||||
if (path->slots[level] >=
|
|
||||||
btrfs_header_nritems(path->nodes[level]))
|
|
||||||
break;
|
|
||||||
|
|
||||||
ret = walk_down_proc(trans, root, path, wc, lookup_info);
|
ret = walk_down_proc(trans, root, path, wc, lookup_info);
|
||||||
if (ret > 0)
|
if (ret > 0)
|
||||||
break;
|
break;
|
||||||
@@ -5413,6 +5409,10 @@ static noinline int walk_down_tree(struct btrfs_trans_handle *trans,
|
|||||||
if (level == 0)
|
if (level == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (path->slots[level] >=
|
||||||
|
btrfs_header_nritems(path->nodes[level]))
|
||||||
|
break;
|
||||||
|
|
||||||
ret = do_walk_down(trans, root, path, wc, &lookup_info);
|
ret = do_walk_down(trans, root, path, wc, &lookup_info);
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
path->slots[level]++;
|
path->slots[level]++;
|
||||||
|
Reference in New Issue
Block a user