From: Chris Mason Date: Tue, 7 Aug 2012 19:34:49 +0000 (-0400) Subject: Btrfs: don't run __tree_mod_log_free_eb on leaves X-Git-Tag: v3.6-rc4~6^2~10 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=b12a3b1ea209d9dec02731fba58c3dbe7d31cfd8;p=~emulex%2Finfiniband.git Btrfs: don't run __tree_mod_log_free_eb on leaves When we split a leaf, we may end up inserting a new root on top of that leaf. The reflog code was incorrectly assuming the old root was always a node. This makes sure we skip over leaves. Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 08e0b11ba0a..6d183f60d63 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -625,6 +625,9 @@ __tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, struct extent_buffer *eb) u32 nritems; int ret; + if (btrfs_header_level(eb) == 0) + return; + nritems = btrfs_header_nritems(eb); for (i = nritems - 1; i >= 0; i--) { ret = tree_mod_log_insert_key_locked(fs_info, eb, i,