From: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
To: Anand Jain <anand.jain@oracle.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 1/3] btrfs-progs: move out print in cmd_df to another function
Date: Fri, 30 Aug 2013 10:01:24 +0800 [thread overview]
Message-ID: <521FFCF4.2030702@cn.fujitsu.com> (raw)
In-Reply-To: <1376657303-14931-2-git-send-email-anand.jain@oracle.com>
On 08/16/2013 08:48 PM, Anand Jain wrote:
Hello Anand,
We'd appreciate you use checkpatch.pl to check coding
style before sending patches.
For this patch:
ERROR: "foo * bar" should be "foo *bar"
#35: FILE: cmds-filesystem.c:47:
+static char * group_type_str(u64 flag)
ERROR: "foo * bar" should be "foo *bar"
#67: FILE: cmds-filesystem.c:63:
+static char * group_profile_str(u64 flag)
total: 2 errors, 0 warnings, 245 lines checked
> This is a prepatory work for the following btrfs fi show command
> fixes. So that we have a function get_df to get the fs sizes
>
> v2:
> combined the other patches as below and rebase
> btrfs-progs: get string for the group profile and type
>
> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> ---
> cmds-filesystem.c | 194 +++++++++++++++++++++++++++++++----------------------
> ctree.h | 11 +++
> 2 files changed, 124 insertions(+), 81 deletions(-)
>
> diff --git a/cmds-filesystem.c b/cmds-filesystem.c
> index a4e30ea..be8afde 100644
> --- a/cmds-filesystem.c
> +++ b/cmds-filesystem.c
> @@ -44,28 +44,51 @@ static const char * const cmd_df_usage[] = {
> NULL
> };
>
> -static int cmd_df(int argc, char **argv)
> +static char * group_type_str(u64 flag)
> {
> - struct btrfs_ioctl_space_args *sargs, *sargs_orig;
> - u64 count = 0, i;
> - int ret;
> - int fd;
> - int e;
> - char *path;
> - DIR *dirstream = NULL;
> -
> - if (check_argc_exact(argc, 2))
> - usage(cmd_df_usage);
> -
> - path = argv[1];
> + switch (flag & BTRFS_BLOCK_GROUP_TYPE_MASK) {
> + case BTRFS_BLOCK_GROUP_DATA:
> + return "data";
> + case BTRFS_BLOCK_GROUP_SYSTEM:
> + return "system";
> + case BTRFS_BLOCK_GROUP_METADATA:
> + return "metadata";
> + case BTRFS_BLOCK_GROUP_DATA|BTRFS_BLOCK_GROUP_METADATA:
> + return "mixed";
> + default:
> + return "unknown";
> + }
> +}
>
> - fd = open_file_or_dir(path, &dirstream);
> - if (fd < 0) {
> - fprintf(stderr, "ERROR: can't access to '%s'\n", path);
> - return 12;
> +static char * group_profile_str(u64 flag)
> +{
> + switch (flag & BTRFS_BLOCK_GROUP_PROFILE_MASK) {
> + case 0:
> + return "single";
> + case BTRFS_BLOCK_GROUP_RAID0:
> + return "RAID0";
> + case BTRFS_BLOCK_GROUP_RAID1:
> + return "RAID1";
> + case BTRFS_BLOCK_GROUP_RAID5:
> + return "RAID5";
> + case BTRFS_BLOCK_GROUP_RAID6:
> + return "RAID6";
> + case BTRFS_BLOCK_GROUP_DUP:
> + return "DUP";
> + case BTRFS_BLOCK_GROUP_RAID10:
> + return "RAID10";
> + default:
> + return "unknown";
> }
> +}
> +
> +static int get_df(int fd, struct btrfs_ioctl_space_args **sargs_ret)
> +{
> + u64 count = 0;
> + int ret, e;
> + struct btrfs_ioctl_space_args *sargs;
>
> - sargs_orig = sargs = malloc(sizeof(struct btrfs_ioctl_space_args));
> + sargs = malloc(sizeof(struct btrfs_ioctl_space_args));
> if (!sargs)
> return -ENOMEM;
>
> @@ -75,89 +98,98 @@ static int cmd_df(int argc, char **argv)
> ret = ioctl(fd, BTRFS_IOC_SPACE_INFO, sargs);
> e = errno;
> if (ret) {
> - fprintf(stderr, "ERROR: couldn't get space info on '%s' - %s\n",
> - path, strerror(e));
> - goto out;
> + fprintf(stderr, "ERROR: couldn't get space info - %s\n",
> + strerror(e));
> + free(sargs);
> + return ret;
> }
> if (!sargs->total_spaces) {
> - ret = 0;
> - goto out;
> + free(sargs);
> + return 0;
> }
> -
> count = sargs->total_spaces;
> + free(sargs);
>
> - sargs = realloc(sargs, sizeof(struct btrfs_ioctl_space_args) +
> + sargs = malloc(sizeof(struct btrfs_ioctl_space_args) +
> (count * sizeof(struct btrfs_ioctl_space_info)));
> - if (!sargs) {
> - sargs = sargs_orig;
> + if (!sargs)
> ret = -ENOMEM;
> - goto out;
> - }
>
> sargs->space_slots = count;
> sargs->total_spaces = 0;
> -
> ret = ioctl(fd, BTRFS_IOC_SPACE_INFO, sargs);
> e = errno;
> if (ret) {
> - fprintf(stderr, "ERROR: couldn't get space info on '%s' - %s\n",
> - path, strerror(e));
> - goto out;
> + fprintf(stderr, "ERROR: get space info count %llu - %s\n",
> + count, strerror(e));
> + free(sargs);
> + return ret;
> }
> + *sargs_ret = sargs;
> + return 0;
> +}
>
> - for (i = 0; i < sargs->total_spaces; i++) {
> - char description[80];
> - int written = 0;
> - u64 flags = sargs->spaces[i].flags;
> +static void print_df(struct btrfs_ioctl_space_args *sargs)
> +{
> + char description[80];
> + char *total_bytes;
> + char *used_bytes;
> + u64 flags;
> + u64 i;
> + int written;
> + char g_str[64];
> + int g_sz;
>
> + for (i = 0; i < sargs->total_spaces; i++) {
> + flags = sargs->spaces[i].flags;
> + written = 0;
> memset(description, 0, 80);
>
> - if (flags & BTRFS_BLOCK_GROUP_DATA) {
> - if (flags & BTRFS_BLOCK_GROUP_METADATA) {
> - snprintf(description, 14, "%s",
> - "Data+Metadata");
> - written += 13;
> - } else {
> - snprintf(description, 5, "%s", "Data");
> - written += 4;
> - }
> - } else if (flags & BTRFS_BLOCK_GROUP_SYSTEM) {
> - snprintf(description, 7, "%s", "System");
> - written += 6;
> - } else if (flags & BTRFS_BLOCK_GROUP_METADATA) {
> - snprintf(description, 9, "%s", "Metadata");
> - written += 8;
> - }
> + strcpy(g_str, group_type_str(flags));
> + g_sz = strlen(g_str);
> + snprintf(description, g_sz + 1, "%s", g_str);
> + written += g_sz;
>
> - if (flags & BTRFS_BLOCK_GROUP_RAID0) {
> - snprintf(description+written, 8, "%s", ", RAID0");
> - written += 7;
> - } else if (flags & BTRFS_BLOCK_GROUP_RAID1) {
> - snprintf(description+written, 8, "%s", ", RAID1");
> - written += 7;
> - } else if (flags & BTRFS_BLOCK_GROUP_DUP) {
> - snprintf(description+written, 6, "%s", ", DUP");
> - written += 5;
> - } else if (flags & BTRFS_BLOCK_GROUP_RAID10) {
> - snprintf(description+written, 9, "%s", ", RAID10");
> - written += 8;
> - } else if (flags & BTRFS_BLOCK_GROUP_RAID5) {
> - snprintf(description+written, 9, "%s", ", RAID5");
> - written += 7;
> - } else if (flags & BTRFS_BLOCK_GROUP_RAID6) {
> - snprintf(description+written, 9, "%s", ", RAID6");
> - written += 7;
> - }
> + strcpy(g_str, group_profile_str(flags));
> + g_sz = strlen(g_str);
> + snprintf(description+written, g_sz + 3, ", %s", g_str);
> + written += g_sz + 2;
>
> - printf("%s: total=%s, used=%s\n", description,
> - pretty_size(sargs->spaces[i].total_bytes),
> - pretty_size(sargs->spaces[i].used_bytes));
> + total_bytes = pretty_size(sargs->spaces[i].total_bytes);
> + used_bytes = pretty_size(sargs->spaces[i].used_bytes);
> + printf("%s: total=%s, used=%s\n", description, total_bytes,
> + used_bytes);
> }
> -out:
> - close_file_or_dir(fd, dirstream);
> - free(sargs);
> +}
>
> - return 0;
> +static int cmd_df(int argc, char **argv)
> +{
> + struct btrfs_ioctl_space_args *sargs = NULL;
> + int ret;
> + int fd;
> + char *path;
> + DIR *dirstream = NULL;
> +
> + if (check_argc_exact(argc, 2))
> + usage(cmd_df_usage);
> +
> + path = argv[1];
> +
> + fd = open_file_or_dir(path, &dirstream);
> + if (fd < 0) {
> + fprintf(stderr, "ERROR: can't access to '%s'\n", path);
> + return 12;
> + }
> + ret = get_df(fd, &sargs);
> +
> + if (!ret && sargs) {
> + print_df(sargs);
> + free(sargs);
> + } else
> + fprintf(stderr, "ERROR: get_df failed %s\n", strerror(ret));
> +
> + close_file_or_dir(fd, dirstream);
> + return ret;
> }
>
> static int uuid_search(struct btrfs_fs_devices *fs_devices, char *search)
> diff --git a/ctree.h b/ctree.h
> index 3c65d0a..3322c68 100644
> --- a/ctree.h
> +++ b/ctree.h
> @@ -828,6 +828,17 @@ struct btrfs_csum_item {
> #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
> #define BTRFS_BLOCK_GROUP_RESERVED BTRFS_AVAIL_ALLOC_BIT_SINGLE
>
> +#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \
> + BTRFS_BLOCK_GROUP_SYSTEM | \
> + BTRFS_BLOCK_GROUP_METADATA)
> +
> +#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \
> + BTRFS_BLOCK_GROUP_RAID1 | \
> + BTRFS_BLOCK_GROUP_RAID5 | \
> + BTRFS_BLOCK_GROUP_RAID6 | \
> + BTRFS_BLOCK_GROUP_DUP | \
> + BTRFS_BLOCK_GROUP_RAID10)
> +
> /* used in struct btrfs_balance_args fields */
> #define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48)
>
next prev parent reply other threads:[~2013-08-30 2:03 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-16 12:48 [PATCH 0/3] fi show, dev scan and lblkid Anand Jain
2013-08-16 12:48 ` [PATCH 1/3] btrfs-progs: move out print in cmd_df to another function Anand Jain
2013-08-19 19:20 ` Zach Brown
2013-08-20 6:17 ` Anand Jain
2013-08-20 6:16 ` [PATCH] btrfs-progs: v3, " Anand Jain
2013-08-30 2:01 ` Wang Shilong [this message]
2013-08-30 2:28 ` [PATCH 1/3] btrfs-progs: " Anand Jain
2013-08-16 12:48 ` [PATCH 2/3] btrfs-progs: read from the kernel when disk is mounted Anand Jain
2013-08-30 2:07 ` Wang Shilong
2013-08-16 12:48 ` [PATCH 3/3] btrfs-progs: use lblkid to scan and filesystem show improvements Anand Jain
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=521FFCF4.2030702@cn.fujitsu.com \
--to=wangsl.fnst@cn.fujitsu.com \
--cc=anand.jain@oracle.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.