aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorChris Mason <chris.mason@fusionio.com>2012-08-07 15:34:49 -0400
committerChris Mason <chris.mason@oracle.com>2012-08-28 16:53:34 -0400
commitb12a3b1ea209d9dec02731fba58c3dbe7d31cfd8 (patch)
tree9e4a1e663a040b5b8af6b266bcb53a6a7fba437f /fs/btrfs
parent6fc823b10f333313deb0b5d9069cbfd3a3f99f3a (diff)
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 <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/ctree.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c
index 08e0b11ba0a1..6d183f60d63a 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)
625 u32 nritems; 625 u32 nritems;
626 int ret; 626 int ret;
627 627
628 if (btrfs_header_level(eb) == 0)
629 return;
630
628 nritems = btrfs_header_nritems(eb); 631 nritems = btrfs_header_nritems(eb);
629 for (i = nritems - 1; i >= 0; i--) { 632 for (i = nritems - 1; i >= 0; i--) {
630 ret = tree_mod_log_insert_key_locked(fs_info, eb, i, 633 ret = tree_mod_log_insert_key_locked(fs_info, eb, i,