root_add_used(root, fs_info->nodesize);
 
-       memzero_extent_buffer(c, 0, sizeof(struct btrfs_header));
        btrfs_set_header_nritems(c, 1);
-       btrfs_set_header_level(c, level);
-       btrfs_set_header_bytenr(c, c->start);
-       btrfs_set_header_generation(c, trans->transid);
-       btrfs_set_header_backref_rev(c, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(c, root->root_key.objectid);
-
-       write_extent_buffer_fsid(c, fs_info->fsid);
-       write_extent_buffer_chunk_tree_uuid(c, fs_info->chunk_tree_uuid);
-
        btrfs_set_node_key(c, &lower_key, 0);
        btrfs_set_node_blockptr(c, 0, lower->start);
        lower_gen = btrfs_header_generation(lower);
                return PTR_ERR(split);
 
        root_add_used(root, fs_info->nodesize);
-
-       memzero_extent_buffer(split, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_level(split, btrfs_header_level(c));
-       btrfs_set_header_bytenr(split, split->start);
-       btrfs_set_header_generation(split, trans->transid);
-       btrfs_set_header_backref_rev(split, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(split, root->root_key.objectid);
-       write_extent_buffer_fsid(split, fs_info->fsid);
-       write_extent_buffer_chunk_tree_uuid(split, fs_info->chunk_tree_uuid);
+       ASSERT(btrfs_header_level(c) == level);
 
        ret = tree_mod_log_eb_copy(fs_info, split, c, 0, mid, c_nritems - mid);
        if (ret) {
 
        root_add_used(root, fs_info->nodesize);
 
-       memzero_extent_buffer(right, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_bytenr(right, right->start);
-       btrfs_set_header_generation(right, trans->transid);
-       btrfs_set_header_backref_rev(right, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(right, root->root_key.objectid);
-       btrfs_set_header_level(right, 0);
-       write_extent_buffer_fsid(right, fs_info->fsid);
-       write_extent_buffer_chunk_tree_uuid(right, fs_info->chunk_tree_uuid);
-
        if (split == 0) {
                if (mid <= slot) {
                        btrfs_set_header_nritems(right, 0);
 
                goto fail;
        }
 
-       memzero_extent_buffer(leaf, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_bytenr(leaf, leaf->start);
-       btrfs_set_header_generation(leaf, trans->transid);
-       btrfs_set_header_backref_rev(leaf, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(leaf, objectid);
        root->node = leaf;
-
-       write_extent_buffer_fsid(leaf, fs_info->fsid);
-       write_extent_buffer_chunk_tree_uuid(leaf, fs_info->chunk_tree_uuid);
        btrfs_mark_buffer_dirty(leaf);
 
        root->commit_root = btrfs_root_node(root);
                return ERR_CAST(leaf);
        }
 
-       memzero_extent_buffer(leaf, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_bytenr(leaf, leaf->start);
-       btrfs_set_header_generation(leaf, trans->transid);
-       btrfs_set_header_backref_rev(leaf, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(leaf, BTRFS_TREE_LOG_OBJECTID);
        root->node = leaf;
 
-       write_extent_buffer_fsid(root->node, fs_info->fsid);
        btrfs_mark_buffer_dirty(root->node);
        btrfs_tree_unlock(root->node);
        return root;
 
 
 static struct extent_buffer *
 btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root,
-                     u64 bytenr, int level)
+                     u64 bytenr, int level, u64 owner)
 {
        struct btrfs_fs_info *fs_info = root->fs_info;
        struct extent_buffer *buf;
        if (IS_ERR(buf))
                return buf;
 
-       btrfs_set_header_generation(buf, trans->transid);
        btrfs_set_buffer_lockdep_class(root->root_key.objectid, buf, level);
        btrfs_tree_lock(buf);
        clean_tree_block(fs_info, buf);
        btrfs_set_lock_blocking(buf);
        set_extent_buffer_uptodate(buf);
 
+       memzero_extent_buffer(buf, 0, sizeof(struct btrfs_header));
+       btrfs_set_header_level(buf, level);
+       btrfs_set_header_bytenr(buf, buf->start);
+       btrfs_set_header_generation(buf, trans->transid);
+       btrfs_set_header_backref_rev(buf, BTRFS_MIXED_BACKREF_REV);
+       btrfs_set_header_owner(buf, owner);
+       write_extent_buffer_fsid(buf, fs_info->fsid);
+       write_extent_buffer_chunk_tree_uuid(buf, fs_info->chunk_tree_uuid);
        if (root->root_key.objectid == BTRFS_TREE_LOG_OBJECTID) {
                buf->log_index = root->log_transid % 2;
                /*
 #ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
        if (btrfs_is_testing(fs_info)) {
                buf = btrfs_init_new_buffer(trans, root, root->alloc_bytenr,
-                                           level);
+                                           level, root_objectid);
                if (!IS_ERR(buf))
                        root->alloc_bytenr += blocksize;
                return buf;
        if (ret)
                goto out_unuse;
 
-       buf = btrfs_init_new_buffer(trans, root, ins.objectid, level);
+       buf = btrfs_init_new_buffer(trans, root, ins.objectid, level,
+                                   root_objectid);
        if (IS_ERR(buf)) {
                ret = PTR_ERR(buf);
                goto out_free_reserved;
 
                goto fail;
        }
 
-       memzero_extent_buffer(leaf, 0, sizeof(struct btrfs_header));
-       btrfs_set_header_bytenr(leaf, leaf->start);
-       btrfs_set_header_generation(leaf, trans->transid);
-       btrfs_set_header_backref_rev(leaf, BTRFS_MIXED_BACKREF_REV);
-       btrfs_set_header_owner(leaf, objectid);
-
-       write_extent_buffer_fsid(leaf, fs_info->fsid);
-       write_extent_buffer_chunk_tree_uuid(leaf, fs_info->chunk_tree_uuid);
        btrfs_mark_buffer_dirty(leaf);
 
        inode_item = &root_item->inode;