From: Goffredo Baroncelli <kreijack@gmail.com>
To: linux-btrfs@vger.kernel.org
Cc: Goffredo Baroncelli <kreijack@inwind.it>
Subject: [PATCH 7/8] Print the summary
Date: Wed, 17 Dec 2014 21:14:11 +0100 [thread overview]
Message-ID: <1418847252-14184-8-git-send-email-kreijack@inwind.it> (raw)
In-Reply-To: <1418847252-14184-1-git-send-email-kreijack@inwind.it>
This patch prints the summary of the filesystem after the creation.
The main fileds printed are:
- devices list with their uuid, devid, path and size
- raid profile (dup,single,raid0...)
- leafsize/nodesize/sectorsize
- filesystem features (raid56, extref, mixed-bg)
- chunk size and type
If the '-v' switched is passed, the output is more verbose; if the '-q'
switched is passed, only the errors are printed.
Below an example:
#mkfs.btrfs -L btrfs-test -f -M -m raid5 -d raid5 /dev/vd[b-k]"
BTRFS filesystem summary:
Label: btrfs-test
UUID: 14ae8a88-98ac-4f22-8441-79f76ec622f7
Node size: 4096
Leaf size: 4096
Sector size: 4096
Initial chunks:
Data+Metadata: 9.01GiB
System: 18.06MiB
Metadata profile: RAID5
Data profile: RAID5
Mixed mode: YES
SSD detected: NO
Incompat features: mixed-bg, extref, raid56
Number of devices: 10
UUID ID SIZE PATH
------------------------------------ -- --------- -----------
df1c7f50-1980-4da2-8bc9-7ee6ffb0b554 1 50.00GiB /dev/vdb
32c808a0-cd7b-4497-a2c0-1d77a9854af9 2 50.00GiB /dev/vdc
3159782e-d108-40bc-9e15-090ecac160b4 3 50.00GiB /dev/vdd
db7eaf0c-beb8-4093-a9d0-b9c25c146305 4 50.00GiB /dev/vde
c367ca04-1f71-49c0-a331-11fc0b87e9fc 5 50.00GiB /dev/vdf
e9b73c86-4058-4b3a-90ac-18741a276e70 6 50.00GiB /dev/vdg
c4298b7a-ad41-4690-bf10-bf748b319413 7 50.00GiB /dev/vdh
1cf048c8-af8a-4225-b09a-5d12e9b217fa 8 2.00GiB /dev/vdi
7e157869-768a-4725-bad5-82e6bd05fd17 9 2.00GiB /dev/vdj
2c9431ac-c7f0-45a5-8529-cef8cf6e4033 10 2.00GiB /dev/vdk
Total devices size: 356.01GiB
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
---
mkfs.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 87 insertions(+), 12 deletions(-)
diff --git a/mkfs.c b/mkfs.c
index 2d7b2ca..30a79df 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -1251,6 +1251,21 @@ static void process_fs_features(u64 flags)
}
}
+static void print_fs_features(u64 flags)
+{
+ int i;
+ int first = 1;
+
+ for (i = 0; i < ARRAY_SIZE(mkfs_features); i++) {
+ if (flags & mkfs_features[i].flag) {
+ if (!first)
+ printf(", %s",mkfs_features[i].name);
+ else
+ printf("%s",mkfs_features[i].name);
+ first=0;
+ }
+ }
+}
/*
* Return NULL if all features were parsed fine, otherwise return the name of
@@ -1271,13 +1286,43 @@ static char* parse_fs_features(char *namelist, u64 *flags)
return NULL;
}
+static void list_all_devices(struct btrfs_root *root)
+{
+ struct btrfs_fs_devices *fs_devices;
+ struct btrfs_device *device;
+ int number_of_devices = 0;
+ u64 total_block_count = 0;
+
+ fs_devices = root->fs_info->fs_devices;
+
+ list_for_each_entry(device, &fs_devices->devices, dev_list)
+ number_of_devices++;
+
+ printf(" Number of devices:\t%d\n", number_of_devices);
+ printf(" UUID ID SIZE PATH\n");
+ printf(" ------------------------------------ -- --------- -----------\n");
+ list_for_each_entry_reverse(device, &fs_devices->devices, dev_list) {
+ char dev_uuid[BTRFS_UUID_UNPARSED_SIZE];
+
+ uuid_unparse(device->uuid, dev_uuid);
+ printf(" %s %3llu %10s %s\n",
+ dev_uuid, device->devid,
+ pretty_size(device->total_bytes),
+ device->name);
+ total_block_count += device->total_bytes;
+ }
+
+ printf("\n");
+ printf(" Total devices size: %10s\n",
+ pretty_size(total_block_count));
+}
+
int main(int ac, char **av)
{
char *file;
struct btrfs_root *root;
struct btrfs_trans_handle *trans;
char *label = NULL;
- char *first_file;
u64 block_count = 0;
u64 dev_block_count = 0;
u64 blocks[7];
@@ -1532,9 +1577,11 @@ int main(int ac, char **av)
exit(1);
}
- /* if we are here that means all devs are good to btrfsify */
- printf("%s\n", BTRFS_BUILD_VERSION);
- printf("See http://btrfs.wiki.kernel.org for more information.\n\n");
+ if (verbose) {
+ /* if we are here that means all devs are good to btrfsify */
+ printf("%s\n", BTRFS_BUILD_VERSION);
+ printf("See http://btrfs.wiki.kernel.org for more information.\n\n");
+ }
dev_cnt--;
@@ -1550,7 +1597,6 @@ int main(int ac, char **av)
strerror(errno));
exit(1);
}
- first_file = file;
ret = btrfs_prepare_device(fd, file, zero_end, &dev_block_count,
block_count, &mixed, discard);
if (ret) {
@@ -1568,7 +1614,6 @@ int main(int ac, char **av)
exit(1);
}
- first_file = file;
source_dir_size = size_sourcedir(source_dir, sectorsize,
&num_of_meta_chunks, &size_of_data);
if(block_count < source_dir_size)
@@ -1606,7 +1651,8 @@ int main(int ac, char **av)
features |= BTRFS_FEATURE_INCOMPAT_RAID56;
}
- process_fs_features(features);
+ if (verbose)
+ process_fs_features(features);
ret = make_btrfs(fd, file, label, fs_uuid, blocks, dev_block_count,
nodesize, leafsize,
@@ -1687,11 +1733,6 @@ raid_groups:
ret = create_data_reloc_tree(trans, root);
BUG_ON(ret);
- printf("fs created label %s on %s\n\tnodesize %u leafsize %u "
- "sectorsize %u size %s\n",
- label, first_file, nodesize, leafsize, sectorsize,
- pretty_size(btrfs_super_total_bytes(root->fs_info->super_copy)));
-
btrfs_commit_transaction(trans, root);
if (source_dir_set) {
@@ -1706,6 +1747,40 @@ raid_groups:
BUG_ON(ret);
}
+ if (!quiet) {
+ printf("BTRFS filesystem summary:\n");
+ printf(" Label:\t\t%s\n", label);
+ printf(" UUID:\t\t\t%s\n", fs_uuid);
+ printf("\n");
+
+ printf(" Node size:\t\t%u\n", nodesize);
+ printf(" Leaf size:\t\t%u\n", leafsize);
+ printf(" Sector size:\t\t%u\n", sectorsize);
+ printf(" Initial chunks:\n");
+ if (allocation.data)
+ printf(" Data:\t\t%s\n",
+ pretty_size(allocation.data));
+ if (allocation.metadata)
+ printf(" Metadata:\t\t%s\n",
+ pretty_size(allocation.metadata));
+ if (allocation.mixed)
+ printf(" Data+Metadata:\t%s\n",
+ pretty_size(allocation.mixed));
+ printf(" System:\t\t%s\n",
+ pretty_size(allocation.system));
+ printf(" Metadata profile:\t%s\n",
+ group_profile_str(metadata_profile));
+ printf(" Data profile:\t\t%s\n",
+ group_profile_str(data_profile));
+ printf(" Mixed mode:\t\t%s\n", mixed ? "YES" : "NO");
+ printf(" SSD detected:\t\t%s\n", ssd ? "YES" : "NO");
+ printf(" Incompat features:\t");
+ print_fs_features(features);
+ printf("\n");
+
+ list_all_devices(root);
+ }
+
ret = close_ctree(root);
BUG_ON(ret);
free(label);
--
2.1.3
next prev parent reply other threads:[~2014-12-17 20:13 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-17 20:14 [PATCH V2][BTRFS-PROGS] Improve output of mkfs.btrfs command Goffredo Baroncelli
2014-12-17 20:14 ` [PATCH 1/8] Add -v -q switches to mkfs.btrfs Goffredo Baroncelli
2014-12-25 1:19 ` Satoru Takeuchi
2014-12-17 20:14 ` [PATCH 2/8] Move group_profile_str() in utils.c Goffredo Baroncelli
2014-12-25 1:20 ` Satoru Takeuchi
2014-12-17 20:14 ` [PATCH 3/8] Add verbose option to btrfs_add_to_fsid() Goffredo Baroncelli
2014-12-25 1:28 ` Satoru Takeuchi
2014-12-17 20:14 ` [PATCH 4/8] Add strdup in btrfs_add_to_fsid() to track the device path Goffredo Baroncelli
2014-12-25 1:29 ` Satoru Takeuchi
2014-12-17 20:14 ` [PATCH 5/8] Return the fsid from make_btrfs() Goffredo Baroncelli
2014-12-25 2:44 ` Satoru Takeuchi
2014-12-25 9:22 ` Goffredo Baroncelli
2014-12-17 20:14 ` [PATCH 6/8] Track the size of the chunk created Goffredo Baroncelli
2014-12-17 20:14 ` Goffredo Baroncelli [this message]
2014-12-17 20:14 ` [PATCH 8/8] Add -v and -q switches in the mkfs.btrfs man page Goffredo Baroncelli
2014-12-17 22:38 ` [PATCH V2][BTRFS-PROGS] Improve output of mkfs.btrfs command Martin Steigerwald
2014-12-18 2:28 ` Anand Jain
2015-03-23 23:46 ` David Sterba
2015-03-25 19:07 ` Goffredo Baroncelli
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=1418847252-14184-8-git-send-email-kreijack@inwind.it \
--to=kreijack@gmail.com \
--cc=kreijack@inwind.it \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).