Merge branch 'for-linus-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/mason...
[cascardo/linux.git] / fs / btrfs / ctree.c
index d1c56c9..f6ba165 100644 (file)
@@ -45,9 +45,7 @@ static int tree_mod_log_free_eb(struct btrfs_fs_info *fs_info,
 
 struct btrfs_path *btrfs_alloc_path(void)
 {
-       struct btrfs_path *path;
-       path = kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS);
-       return path;
+       return kmem_cache_zalloc(btrfs_path_cachep, GFP_NOFS);
 }
 
 /*
@@ -1102,7 +1100,7 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
        int level, ret;
        int last_ref = 0;
        int unlock_orig = 0;
-       u64 parent_start;
+       u64 parent_start = 0;
 
        if (*cow_ret == buf)
                unlock_orig = 1;
@@ -1121,13 +1119,8 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
        else
                btrfs_node_key(buf, &disk_key, 0);
 
-       if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) {
-               if (parent)
-                       parent_start = parent->start;
-               else
-                       parent_start = 0;
-       } else
-               parent_start = 0;
+       if ((root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) && parent)
+               parent_start = parent->start;
 
        cow = btrfs_alloc_tree_block(trans, root, parent_start,
                        root->root_key.objectid, &disk_key, level,
@@ -1170,8 +1163,6 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
                if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID ||
                    btrfs_header_backref_rev(buf) < BTRFS_MIXED_BACKREF_REV)
                        parent_start = buf->start;
-               else
-                       parent_start = 0;
 
                extent_buffer_get(cow);
                tree_mod_log_set_root_pointer(root, cow, 1);
@@ -1182,11 +1173,6 @@ static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
                free_extent_buffer(buf);
                add_root_to_dirty_list(root);
        } else {
-               if (root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
-                       parent_start = parent->start;
-               else
-                       parent_start = 0;
-
                WARN_ON(trans->transid != btrfs_header_generation(parent));
                tree_mod_log_insert_key(root->fs_info, parent, parent_slot,
                                        MOD_LOG_KEY_REPLACE, GFP_NOFS);
@@ -1729,20 +1715,6 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans,
        return err;
 }
 
-/*
- * The leaf data grows from end-to-front in the node.
- * this returns the address of the start of the last item,
- * which is the stop of the leaf data stack
- */
-static inline unsigned int leaf_data_end(struct btrfs_root *root,
-                                        struct extent_buffer *leaf)
-{
-       u32 nr = btrfs_header_nritems(leaf);
-       if (nr == 0)
-               return BTRFS_LEAF_DATA_SIZE(root);
-       return btrfs_item_offset_nr(leaf, nr - 1);
-}
-
 
 /*
  * search for key in the extent_buffer.  The items start at offset p,
@@ -2268,7 +2240,6 @@ static void reada_for_search(struct btrfs_root *root,
        u64 search;
        u64 target;
        u64 nread = 0;
-       u64 gen;
        struct extent_buffer *eb;
        u32 nr;
        u32 blocksize;
@@ -2313,7 +2284,6 @@ static void reada_for_search(struct btrfs_root *root,
                search = btrfs_node_blockptr(node, nr);
                if ((search <= target && target - search <= 65536) ||
                    (search > target && search - target <= 65536)) {
-                       gen = btrfs_node_ptr_generation(node, nr);
                        readahead_tree_block(root, search);
                        nread += blocksize;
                }
@@ -4341,7 +4311,11 @@ again:
                        if (path->slots[1] == 0)
                                fixup_low_keys(fs_info, path, &disk_key, 1);
                }
-               btrfs_mark_buffer_dirty(right);
+               /*
+                * We create a new leaf 'right' for the required ins_len and
+                * we'll do btrfs_mark_buffer_dirty() on this leaf after copying
+                * the content of ins_len to 'right'.
+                */
                return ret;
        }
 
@@ -4772,8 +4746,9 @@ void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
 
        if (btrfs_leaf_free_space(root, leaf) < total_size) {
                btrfs_print_leaf(root, leaf);
-               btrfs_crit(root->fs_info, "not enough freespace need %u have %d",
-                      total_size, btrfs_leaf_free_space(root, leaf));
+               btrfs_crit(root->fs_info,
+                          "not enough freespace need %u have %d",
+                          total_size, btrfs_leaf_free_space(root, leaf));
                BUG();
        }
 
@@ -4782,8 +4757,9 @@ void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
 
                if (old_data < data_end) {
                        btrfs_print_leaf(root, leaf);
-                       btrfs_crit(root->fs_info, "slot %d old_data %d data_end %d",
-                              slot, old_data, data_end);
+                       btrfs_crit(root->fs_info,
+                                  "slot %d old_data %d data_end %d",
+                                  slot, old_data, data_end);
                        BUG_ON(1);
                }
                /*
@@ -4793,7 +4769,7 @@ void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
                for (i = slot; i < nritems; i++) {
                        u32 ioff;
 
-                       item = btrfs_item_nr( i);
+                       item = btrfs_item_nr(i);
                        ioff = btrfs_token_item_offset(leaf, item, &token);
                        btrfs_set_token_item_offset(leaf, item,
                                                    ioff - total_data, &token);