diff mbox series

[04/15] btrfs-progs: mkfs: add a helper for temp buffer clearing

Message ID 617342ccb42833d8688f9b7631771950f6664459.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
We clear the temporary buffer every time we write a new block, and we
have this memset() code duplicated everywhere.  Change this to a helper
and use the appropriate helper to figure out where the items start.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 mkfs/common.c | 30 ++++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)
diff mbox series

Patch

diff --git a/mkfs/common.c b/mkfs/common.c
index 2e13da17..652484f6 100644
--- a/mkfs/common.c
+++ b/mkfs/common.c
@@ -42,14 +42,22 @@  static u64 reference_root_table[] = {
 	[MKFS_BLOCK_GROUP_TREE]	=	BTRFS_BLOCK_GROUP_TREE_OBJECTID,
 };
 
+static inline void clear_buffer_items(struct extent_buffer *buf,
+				      struct btrfs_mkfs_config *cfg)
+{
+	unsigned long offset = btrfs_item_nr_offset(buf, 0);
+
+	memset_extent_buffer(buf, 0, offset, cfg->nodesize - offset);
+}
+
 static int btrfs_write_empty_tree(int fd, struct btrfs_mkfs_config *cfg,
 				  struct extent_buffer *buf, u64 objectid,
 				  u64 block)
 {
 	int ret;
 
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-	       cfg->nodesize - sizeof(struct btrfs_header));
+
+	clear_buffer_items(buf, cfg);
 	btrfs_set_header_bytenr(buf, block);
 	btrfs_set_header_owner(buf, objectid);
 	btrfs_set_header_nritems(buf, 0);
@@ -76,8 +84,7 @@  static int btrfs_create_tree_root(int fd, struct btrfs_mkfs_config *cfg,
 	int i;
 	u8 uuid[BTRFS_UUID_SIZE];
 
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-		cfg->nodesize - sizeof(struct btrfs_header));
+	clear_buffer_items(buf, cfg);
 	memset(&root_item, 0, sizeof(root_item));
 	memset(&disk_key, 0, sizeof(disk_key));
 
@@ -153,8 +160,7 @@  static int create_free_space_tree(int fd, struct btrfs_mkfs_config *cfg,
 	int nritems = 0;
 	int ret;
 
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-	       cfg->nodesize - sizeof(struct btrfs_header));
+	clear_buffer_items(buf, cfg);
 	itemoff -= sizeof(*info);
 
 	btrfs_set_disk_key_objectid(&disk_key, group_start);
@@ -215,8 +221,7 @@  static int create_block_group_tree(int fd, struct btrfs_mkfs_config *cfg,
 {
 	int ret;
 
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-		cfg->nodesize - sizeof(struct btrfs_header));
+	clear_buffer_items(buf, cfg);
 	write_block_group_item(buf, 0, bg_offset, bg_size, bg_used, 0,
 			       cfg->leaf_data_size -
 			       sizeof(struct btrfs_block_group_item));
@@ -250,8 +255,7 @@  static int fill_extent_tree(int fd, struct btrfs_mkfs_config *cfg,
 	first_free &= ~((u64)cfg->sectorsize - 1);
 
 	/* create the items for the extent tree */
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-		cfg->nodesize - sizeof(struct btrfs_header));
+	clear_buffer_items(buf, cfg);
 	itemoff = cfg->leaf_data_size;
 	for (i = 0; i < blocks_nr; i++) {
 		blk = blocks[i];
@@ -486,8 +490,7 @@  int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	}
 
 	/* create the chunk tree */
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-		cfg->nodesize - sizeof(struct btrfs_header));
+	clear_buffer_items(buf, cfg);
 	nritems = 0;
 	item_size = sizeof(*dev_item);
 	itemoff = cfg->leaf_data_size - item_size;
@@ -575,8 +578,7 @@  int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	}
 
 	/* create the device tree */
-	memset(buf->data + sizeof(struct btrfs_header), 0,
-		cfg->nodesize - sizeof(struct btrfs_header));
+	clear_buffer_items(buf, cfg);
 	nritems = 0;
 	itemoff = cfg->leaf_data_size - sizeof(struct btrfs_dev_extent);