diff options
author | Liu Bo <bo.li.liu@oracle.com> | 2012-10-19 05:50:53 -0400 |
---|---|---|
committer | Josef Bacik <jbacik@fusionio.com> | 2012-12-11 13:31:34 -0500 |
commit | 6a7a665d78c5dd8bc76a010648c4e7d84517ab5a (patch) | |
tree | 60f958605272185f93d99edf8da17dc64430bde4 /fs | |
parent | 95c80bb1f6b24b57058d971ed252b2c1c5121b51 (diff) |
Btrfs: reorder tree mod log operations in deleting a pointer
Since we don't use MOD_LOG_KEY_REMOVE_WHILE_MOVING to add nritems
during rewinding, we should insert a MOD_LOG_KEY_REMOVE operation first.
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/ctree.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index b12c03959162..4d518bd7751d 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
@@ -4609,6 +4609,12 @@ static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root, | |||
4609 | u32 nritems; | 4609 | u32 nritems; |
4610 | int ret; | 4610 | int ret; |
4611 | 4611 | ||
4612 | if (tree_mod_log && level) { | ||
4613 | ret = tree_mod_log_insert_key(root->fs_info, parent, slot, | ||
4614 | MOD_LOG_KEY_REMOVE); | ||
4615 | BUG_ON(ret < 0); | ||
4616 | } | ||
4617 | |||
4612 | nritems = btrfs_header_nritems(parent); | 4618 | nritems = btrfs_header_nritems(parent); |
4613 | if (slot != nritems - 1) { | 4619 | if (slot != nritems - 1) { |
4614 | if (tree_mod_log && level) | 4620 | if (tree_mod_log && level) |
@@ -4619,10 +4625,6 @@ static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root, | |||
4619 | btrfs_node_key_ptr_offset(slot + 1), | 4625 | btrfs_node_key_ptr_offset(slot + 1), |
4620 | sizeof(struct btrfs_key_ptr) * | 4626 | sizeof(struct btrfs_key_ptr) * |
4621 | (nritems - slot - 1)); | 4627 | (nritems - slot - 1)); |
4622 | } else if (tree_mod_log && level) { | ||
4623 | ret = tree_mod_log_insert_key(root->fs_info, parent, slot, | ||
4624 | MOD_LOG_KEY_REMOVE); | ||
4625 | BUG_ON(ret < 0); | ||
4626 | } | 4628 | } |
4627 | 4629 | ||
4628 | nritems--; | 4630 | nritems--; |