]> git.openfabrics.org - ~shefty/rdma-dev.git/blobdiff - fs/btrfs/ctree.c
Btrfs: reorder tree mod log operations in deleting a pointer
[~shefty/rdma-dev.git] / fs / btrfs / ctree.c
index b12c0395916287a6bdfeea62085548905e8c703c..4d518bd7751dda812ed3856b424c4e19bd97e113 100644 (file)
@@ -4609,6 +4609,12 @@ static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
        u32 nritems;
        int ret;
 
+       if (tree_mod_log && level) {
+               ret = tree_mod_log_insert_key(root->fs_info, parent, slot,
+                                             MOD_LOG_KEY_REMOVE);
+               BUG_ON(ret < 0);
+       }
+
        nritems = btrfs_header_nritems(parent);
        if (slot != nritems - 1) {
                if (tree_mod_log && level)
@@ -4619,10 +4625,6 @@ static void del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                              btrfs_node_key_ptr_offset(slot + 1),
                              sizeof(struct btrfs_key_ptr) *
                              (nritems - slot - 1));
-       } else if (tree_mod_log && level) {
-               ret = tree_mod_log_insert_key(root->fs_info, parent, slot,
-                                             MOD_LOG_KEY_REMOVE);
-               BUG_ON(ret < 0);
        }
 
        nritems--;