diff options
author | Yan, Zheng <zheng.yan@oracle.com> | 2010-02-01 02:41:17 +0000 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2010-02-04 11:31:45 -0500 |
commit | 7a7965f83e89f0be506a96769938a721e4e5ae50 (patch) | |
tree | be4ffe67af162c6c7cfd0780c507fd5f2d522635 /fs | |
parent | d7ce5843bb28ada6845ab2ae8510ba3f12d33154 (diff) | |
download | op-kernel-dev-7a7965f83e89f0be506a96769938a721e4e5ae50.zip op-kernel-dev-7a7965f83e89f0be506a96769938a721e4e5ae50.tar.gz |
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/extent-tree.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 432a2da..559f724 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -5402,10 +5402,6 @@ static noinline int walk_down_tree(struct btrfs_trans_handle *trans, int ret; while (level >= 0) { - if (path->slots[level] >= - btrfs_header_nritems(path->nodes[level])) - break; - ret = walk_down_proc(trans, root, path, wc, lookup_info); if (ret > 0) break; @@ -5413,6 +5409,10 @@ static noinline int walk_down_tree(struct btrfs_trans_handle *trans, if (level == 0) break; + if (path->slots[level] >= + btrfs_header_nritems(path->nodes[level])) + break; + ret = do_walk_down(trans, root, path, wc, &lookup_info); if (ret > 0) { path->slots[level]++; |