diff mbox series

[10/15] btrfs-progs: setup the extent tree v2 header properly

Message ID 853f25da362b95b73f5dfd9b9e85578c15c69e54.1646691255.git.josef@toxicpanda.com (mailing list archive)
State New, archived
Headers show
Series btrfs-progs: initial snapshot_id support | expand

Commit Message

Josef Bacik March 7, 2022, 10:17 p.m. UTC
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(-)
diff mbox series

Patch

diff --git a/kernel-shared/extent-tree.c b/kernel-shared/extent-tree.c
index 0361ec97..8f8617b3 100644
--- a/kernel-shared/extent-tree.c
+++ b/kernel-shared/extent-tree.c
@@ -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);
diff --git a/mkfs/common.c b/mkfs/common.c
index 652484f6..8c1c3073 100644
--- a/mkfs/common.c
+++ b/mkfs/common.c
@@ -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);