All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miao Xie <miaox@cn.fujitsu.com>
To: Linux Btrfs <linux-btrfs@vger.kernel.org>
Cc: Arne Jansen <sensille@gmx.net>
Subject: [PATCH 3/9] Btrfs-progs: introduces '-c' option to print the ID of the child qgroups
Date: Thu, 06 Dec 2012 17:46:24 +0800	[thread overview]
Message-ID: <50C06970.7080502@cn.fujitsu.com> (raw)
In-Reply-To: <50C068D4.6020105@cn.fujitsu.com>

From: Wang Shilong <wangsl-fnst@cn.fujitsu.com>

This patch introduces '-c' option to print the ID of the child qgroups.
You may use it like:
	btrfs qgroup show -c <path>

For Example:

                qgroupid(2/0)
                 /       \
                /         \
               /           \
            qgroupid(1/0) qgroupid(1/1)
               \            /
                \          /
		 qgroupid(0/1)

If we use the command:

	btrfs qgroup show -c <path>
The result will output
	0/1 -- -- --
	1/0 -- -- 0/1
	1/1 -- -- 0/1
	2/0 -- -- 1/0,1/1

Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
---
 cmds-qgroup.c |  9 +++++++--
 qgroup.c      | 22 ++++++++++++++++++++++
 qgroup.h      |  1 +
 3 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/cmds-qgroup.c b/cmds-qgroup.c
index f402587..f182c90 100644
--- a/cmds-qgroup.c
+++ b/cmds-qgroup.c
@@ -199,9 +199,10 @@ static int cmd_qgroup_destroy(int argc, char **argv)
 }
 
 static const char * const cmd_qgroup_show_usage[] = {
-	"btrfs qgroup show -p <path>",
+	"btrfs qgroup show -pc <path>",
 	"Show all subvolume quota groups.",
 	"-p		print parent qgroup id",
+	"-c		print child qgroup id",
 	NULL
 };
 
@@ -214,7 +215,7 @@ static int cmd_qgroup_show(int argc, char **argv)
 
 	optind = 1;
 	while (1) {
-		c = getopt(argc, argv, "p");
+		c = getopt(argc, argv, "pc");
 		if (c < 0)
 			break;
 
@@ -223,6 +224,10 @@ static int cmd_qgroup_show(int argc, char **argv)
 			btrfs_qgroup_setup_print_column(
 						BTRFS_QGROUP_PARENT);
 			break;
+		case 'c':
+			btrfs_qgroup_setup_print_column(
+						BTRFS_QGROUP_CHILD);
+			break;
 		default:
 			usage(cmd_qgroup_show_usage);
 		}
diff --git a/qgroup.c b/qgroup.c
index ebe7d17..3bfc408 100644
--- a/qgroup.c
+++ b/qgroup.c
@@ -93,6 +93,11 @@ struct {
 		.need_print	= 0,
 	},
 	{
+		.name		= "child",
+		.column_name	= "Child",
+		.need_print	= 0,
+	},
+	{
 		.name		= NULL,
 		.column_name	= NULL,
 		.need_print	= 0,
@@ -127,6 +132,20 @@ static void print_parent_column(struct btrfs_qgroup *qgroup)
 		printf("---");
 }
 
+static void print_child_column(struct btrfs_qgroup *qgroup)
+{
+	struct btrfs_qgroup_list *list = NULL;
+
+	list_for_each_entry(list, &qgroup->members, next_member) {
+		printf("%llu/%llu", (list->member)->qgroupid >> 48,
+		      ((1ll << 48) - 1) & (list->member)->qgroupid);
+		if (!list_is_last(&list->next_member, &qgroup->members))
+			printf(",");
+	}
+	if (list_empty(&qgroup->members))
+		printf("---");
+}
+
 static void print_qgroup_column(struct btrfs_qgroup *qgroup,
 				enum btrfs_qgroup_column_enum column)
 {
@@ -147,6 +166,9 @@ static void print_qgroup_column(struct btrfs_qgroup *qgroup,
 	case BTRFS_QGROUP_PARENT:
 		print_parent_column(qgroup);
 		break;
+	case BTRFS_QGROUP_CHILD:
+		print_child_column(qgroup);
+		break;
 	default:
 		break;
 	}
diff --git a/qgroup.h b/qgroup.h
index e1de675..02c78be 100644
--- a/qgroup.h
+++ b/qgroup.h
@@ -27,6 +27,7 @@ enum btrfs_qgroup_column_enum {
 	BTRFS_QGROUP_RFER,
 	BTRFS_QGROUP_EXCL,
 	BTRFS_QGROUP_PARENT,
+	BTRFS_QGROUP_CHILD,
 	BTRFS_QGROUP_ALL,
 };
 
-- 
1.7.11.7


  parent reply	other threads:[~2012-12-06  9:46 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-06  9:43 [PATCH 0/9] enhance btrfs qgroup show command Miao Xie
2012-12-06  9:44 ` [PATCH 1/9] Btrfs-progs: restructure show_qgroups Miao Xie
2012-12-06  9:45 ` [PATCH 2/9] Btrfs-progs: introduces '-p' option to print the ID of the parent qgroups Miao Xie
2012-12-06  9:46 ` Miao Xie [this message]
2012-12-06  9:47 ` [PATCH 4/9] Btrfs-progs: introduce '-l' option to print max referenced size of qgroups Miao Xie
2012-12-06  9:47 ` [PATCH 5/9] Btrfs-progs: introduce '-e' option to print max exclusive " Miao Xie
2012-12-06  9:48 ` [PATCH 6/9] Btrfs-progs: list all qgroups impact given path(include ancestral qgroups) Miao Xie
2012-12-06  9:50 ` [PATCH 7/9] Btrfs-progs: list all qgroups impact given path(exclude " Miao Xie
2012-12-06  9:50 ` [PATCH 8/9] Btrfs-progs: enhance btrfs qgroup show to sort qgroups Miao Xie
2012-12-06  9:51 ` [PATCH 9/9] Btrfs-progs: enhance btrfs qgroup to print the result as a table Miao Xie
2013-09-22 15:14 ` [PATCH 0/9] enhance btrfs qgroup show command Dusty Mabe
2013-09-23  1:13   ` Wang Shilong
2013-09-23  1:53     ` Dusty Mabe
2013-09-23  2:18       ` Wang Shilong
2013-09-23  9:29         ` Duncan
2013-09-23 12:56           ` Wang Shilong
2013-09-23 16:55             ` Dusty Mabe
     [not found]               ` <5240EC74.2030506@cn.fujitsu.com>
2013-09-24  3:32                 ` Dusty Mabe

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=50C06970.7080502@cn.fujitsu.com \
    --to=miaox@cn.fujitsu.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=sensille@gmx.net \
    /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.