@@ -2588,7 +2588,13 @@ struct extent_buffer *btrfs_alloc_free_block(struct btrfs_trans_handle *trans,
}
btrfs_set_buffer_uptodate(buf);
trans->blocks_used++;
- memset_extent_buffer(buf, 0, 0, sizeof(struct btrfs_header));
+ if (btrfs_fs_incompat(root->fs_info, EXTENT_TREE_V2)) {
+ memset_extent_buffer(buf, 0, 0, sizeof(struct btrfs_header_v2));
+ btrfs_set_header_snapshot_id(buf, 0);
+ btrfs_set_header_flag(buf, BTRFS_HEADER_FLAG_V2);
+ } else {
+ memset_extent_buffer(buf, 0, 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);
@@ -460,6 +460,12 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
/* create the tree of root objects */
memset(buf->data, 0, cfg->nodesize);
buf->len = cfg->nodesize;
+
+ if (extent_tree_v2) {
+ btrfs_set_header_snapshot_id(buf, 0);
+ btrfs_set_header_flag(buf, BTRFS_HEADER_FLAG_V2);
+ }
+
btrfs_set_header_bytenr(buf, cfg->blocks[MKFS_ROOT_TREE]);
btrfs_set_header_generation(buf, 1);
btrfs_set_header_backref_rev(buf, BTRFS_MIXED_BACKREF_REV);
Now that all the helpers handle the larger header properly, set the correct flag and snapshot_id for blocks if we have extent tree v2 enabled. Signed-off-by: Josef Bacik <josef@toxicpanda.com> --- kernel-shared/extent-tree.c | 8 +++++++- mkfs/common.c | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-)