All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gu Jinxiang <gujx@cn.fujitsu.com>
To: <linux-btrfs@vger.kernel.org>
Subject: [PATCH] btrfs-progs: mkfs: Replace number with enum
Date: Wed, 28 Jun 2017 17:59:24 +0800	[thread overview]
Message-ID: <20170628095924.3276-1-gujx@cn.fujitsu.com> (raw)

For code maintainability and scalability,
replace hardcoded constant with a meaningful enum.

Signed-off-by: Gu Jinxiang <gujx@cn.fujitsu.com>
---
 mkfs/common.c | 47 ++++++++++++++++++++++++-----------------------
 mkfs/common.h | 14 +++++++++++++-
 2 files changed, 37 insertions(+), 24 deletions(-)

diff --git a/mkfs/common.c b/mkfs/common.c
index e4785c5..f34c4eb 100644
--- a/mkfs/common.c
+++ b/mkfs/common.c
@@ -93,18 +93,18 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	uuid_generate(super.dev_item.uuid);
 	uuid_generate(chunk_tree_uuid);
 
-	cfg->blocks[0] = BTRFS_SUPER_INFO_OFFSET;
-	for (i = 1; i < 7; i++) {
+	cfg->blocks[SUPER_BLOCK] = BTRFS_SUPER_INFO_OFFSET;
+	for (i = 1; i < BLOCK_COUNT; i++) {
 		cfg->blocks[i] = BTRFS_SUPER_INFO_OFFSET + 1024 * 1024 +
 			cfg->nodesize * i;
 	}
 
-	btrfs_set_super_bytenr(&super, cfg->blocks[0]);
+	btrfs_set_super_bytenr(&super, cfg->blocks[SUPER_BLOCK]);
 	btrfs_set_super_num_devices(&super, 1);
 	btrfs_set_super_magic(&super, BTRFS_MAGIC_PARTIAL);
 	btrfs_set_super_generation(&super, 1);
-	btrfs_set_super_root(&super, cfg->blocks[1]);
-	btrfs_set_super_chunk_root(&super, cfg->blocks[3]);
+	btrfs_set_super_root(&super, cfg->blocks[ROOT_TREE]);
+	btrfs_set_super_chunk_root(&super, cfg->blocks[CHUNK_TREE]);
 	btrfs_set_super_total_bytes(&super, num_bytes);
 	btrfs_set_super_bytes_used(&super, 6 * cfg->nodesize);
 	btrfs_set_super_sectorsize(&super, cfg->sectorsize);
@@ -121,7 +121,7 @@ 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;
-	btrfs_set_header_bytenr(buf, cfg->blocks[1]);
+	btrfs_set_header_bytenr(buf, cfg->blocks[ROOT_TREE]);
 	btrfs_set_header_nritems(buf, 4);
 	btrfs_set_header_generation(buf, 1);
 	btrfs_set_header_backref_rev(buf, BTRFS_MIXED_BACKREF_REV);
@@ -151,7 +151,7 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	nritems = 0;
 
 	itemoff = __BTRFS_LEAF_DATA_SIZE(cfg->nodesize) - sizeof(root_item);
-	btrfs_set_root_bytenr(&root_item, cfg->blocks[2]);
+	btrfs_set_root_bytenr(&root_item, cfg->blocks[EXTENT_TREE]);
 	btrfs_set_disk_key_objectid(&disk_key, BTRFS_EXTENT_TREE_OBJECTID);
 	btrfs_set_item_key(buf, &disk_key, nritems);
 	btrfs_set_item_offset(buf, btrfs_item_nr(nritems), itemoff);
@@ -162,7 +162,7 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	nritems++;
 
 	itemoff = itemoff - sizeof(root_item);
-	btrfs_set_root_bytenr(&root_item, cfg->blocks[4]);
+	btrfs_set_root_bytenr(&root_item, cfg->blocks[DEV_TREE]);
 	btrfs_set_disk_key_objectid(&disk_key, BTRFS_DEV_TREE_OBJECTID);
 	btrfs_set_item_key(buf, &disk_key, nritems);
 	btrfs_set_item_offset(buf, btrfs_item_nr(nritems), itemoff);
@@ -174,7 +174,7 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	nritems++;
 
 	itemoff = itemoff - sizeof(root_item);
-	btrfs_set_root_bytenr(&root_item, cfg->blocks[5]);
+	btrfs_set_root_bytenr(&root_item, cfg->blocks[FS_TREE]);
 	btrfs_set_disk_key_objectid(&disk_key, BTRFS_FS_TREE_OBJECTID);
 	btrfs_set_item_key(buf, &disk_key, nritems);
 	btrfs_set_item_offset(buf, btrfs_item_nr(nritems), itemoff);
@@ -186,7 +186,7 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	nritems++;
 
 	itemoff = itemoff - sizeof(root_item);
-	btrfs_set_root_bytenr(&root_item, cfg->blocks[6]);
+	btrfs_set_root_bytenr(&root_item, cfg->blocks[CSUM_TREE]);
 	btrfs_set_disk_key_objectid(&disk_key, BTRFS_CSUM_TREE_OBJECTID);
 	btrfs_set_item_key(buf, &disk_key, nritems);
 	btrfs_set_item_offset(buf, btrfs_item_nr(nritems), itemoff);
@@ -199,7 +199,7 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 
 
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[1]);
+	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[ROOT_TREE]);
 	if (ret != cfg->nodesize) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
@@ -210,7 +210,7 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 		cfg->nodesize - sizeof(struct btrfs_header));
 	nritems = 0;
 	itemoff = __BTRFS_LEAF_DATA_SIZE(cfg->nodesize);
-	for (i = 1; i < 7; i++) {
+	for (i = 1; i < BLOCK_COUNT; i++) {
 		item_size = sizeof(struct btrfs_extent_item);
 		if (!skinny_metadata)
 			item_size += sizeof(struct btrfs_tree_block_info);
@@ -267,11 +267,11 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 		btrfs_set_item_size(buf, btrfs_item_nr(nritems), 0);
 		nritems++;
 	}
-	btrfs_set_header_bytenr(buf, cfg->blocks[2]);
+	btrfs_set_header_bytenr(buf, cfg->blocks[EXTENT_TREE]);
 	btrfs_set_header_owner(buf, BTRFS_EXTENT_TREE_OBJECTID);
 	btrfs_set_header_nritems(buf, nritems);
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[2]);
+	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[EXTENT_TREE]);
 	if (ret != cfg->nodesize) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
@@ -354,11 +354,11 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	ptr += item_size;
 	btrfs_set_super_sys_array_size(&super, array_size);
 
-	btrfs_set_header_bytenr(buf, cfg->blocks[3]);
+	btrfs_set_header_bytenr(buf, cfg->blocks[CHUNK_TREE]);
 	btrfs_set_header_owner(buf, BTRFS_CHUNK_TREE_OBJECTID);
 	btrfs_set_header_nritems(buf, nritems);
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[3]);
+	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[CHUNK_TREE]);
 	if (ret != cfg->nodesize) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
@@ -393,11 +393,11 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 				    BTRFS_MKFS_SYSTEM_GROUP_SIZE);
 	nritems++;
 
-	btrfs_set_header_bytenr(buf, cfg->blocks[4]);
+	btrfs_set_header_bytenr(buf, cfg->blocks[DEV_TREE]);
 	btrfs_set_header_owner(buf, BTRFS_DEV_TREE_OBJECTID);
 	btrfs_set_header_nritems(buf, nritems);
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[4]);
+	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[DEV_TREE]);
 	if (ret != cfg->nodesize) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
@@ -406,11 +406,11 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	/* create the FS root */
 	memset(buf->data + sizeof(struct btrfs_header), 0,
 		cfg->nodesize - sizeof(struct btrfs_header));
-	btrfs_set_header_bytenr(buf, cfg->blocks[5]);
+	btrfs_set_header_bytenr(buf, cfg->blocks[FS_TREE]);
 	btrfs_set_header_owner(buf, BTRFS_FS_TREE_OBJECTID);
 	btrfs_set_header_nritems(buf, 0);
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[5]);
+	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[FS_TREE]);
 	if (ret != cfg->nodesize) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
@@ -418,11 +418,11 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	/* finally create the csum root */
 	memset(buf->data + sizeof(struct btrfs_header), 0,
 		cfg->nodesize - sizeof(struct btrfs_header));
-	btrfs_set_header_bytenr(buf, cfg->blocks[6]);
+	btrfs_set_header_bytenr(buf, cfg->blocks[CSUM_TREE]);
 	btrfs_set_header_owner(buf, BTRFS_CSUM_TREE_OBJECTID);
 	btrfs_set_header_nritems(buf, 0);
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[6]);
+	ret = pwrite(fd, buf->data, cfg->nodesize, cfg->blocks[CSUM_TREE]);
 	if (ret != cfg->nodesize) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
@@ -433,7 +433,8 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg)
 	memcpy(buf->data, &super, sizeof(super));
 	buf->len = BTRFS_SUPER_INFO_SIZE;
 	csum_tree_block_size(buf, BTRFS_CRC32_SIZE, 0);
-	ret = pwrite(fd, buf->data, BTRFS_SUPER_INFO_SIZE, cfg->blocks[0]);
+	ret = pwrite(fd, buf->data, BTRFS_SUPER_INFO_SIZE,
+			cfg->blocks[SUPER_BLOCK]);
 	if (ret != BTRFS_SUPER_INFO_SIZE) {
 		ret = (ret < 0 ? -errno : -EIO);
 		goto out;
diff --git a/mkfs/common.h b/mkfs/common.h
index 666a75b..4d8a314 100644
--- a/mkfs/common.h
+++ b/mkfs/common.h
@@ -28,6 +28,18 @@
 #define BTRFS_MKFS_SYSTEM_GROUP_SIZE SZ_4M
 #define BTRFS_MKFS_SMALL_VOLUME_SIZE SZ_1G
 
+/* roots: root tree, extent tree, chunk tree, dev tree, fs tree, csum tree */
+enum btrfs_mkfs_block {
+	SUPER_BLOCK = 0,
+	ROOT_TREE,
+	EXTENT_TREE,
+	CHUNK_TREE,
+	DEV_TREE,
+	FS_TREE,
+	CSUM_TREE,
+	BLOCK_COUNT
+};
+
 struct btrfs_mkfs_config {
 	/* Label of the new filesystem */
 	const char *label;
@@ -43,7 +55,7 @@ struct btrfs_mkfs_config {
 	/* Output fields, set during creation */
 
 	/* Logical addresses of superblock [0] and other tree roots */
-	u64 blocks[8];
+	u64 blocks[BLOCK_COUNT];
 	char fs_uuid[BTRFS_UUID_UNPARSED_SIZE];
 	char chunk_uuid[BTRFS_UUID_UNPARSED_SIZE];
 
-- 
2.9.4




             reply	other threads:[~2017-06-28 10:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-28  9:59 Gu Jinxiang [this message]
2017-08-21 17:39 ` [PATCH] btrfs-progs: mkfs: Replace number with enum David Sterba
2017-08-22 14:04   ` David Sterba
2017-08-23  2:32     ` Gu, Jinxiang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170628095924.3276-1-gujx@cn.fujitsu.com \
    --to=gujx@cn.fujitsu.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.