All of lore.kernel.org
 help / color / mirror / Atom feed
From: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
To: dsterba@suse.cz, linux-btrfs@vger.kernel.org, clm@fb.com
Subject: [PATCH 4/5] btrfs-progs: "qgroup assign" can't handle options
Date: Fri, 18 Mar 2016 10:35:15 +0900	[thread overview]
Message-ID: <56EB5B53.1010806@jp.fujitsu.com> (raw)
In-Reply-To: <56EB5937.8070208@jp.fujitsu.com>

"qgroup assign" is considered as working without any options
from the following commit.

commit 176aeca9a148 ("btrfs-progs: add getopt stubs where needed")

However, we can pass options to this command.

* actual result

   ==================================================
   # ./btrfs qgroup assign --rescan 0/260 1/261 /btrfs
   btrfs qgroup assign: unrecognized option '--rescan'
   usage: btrfs qgroup assign [options] <src> <dst> <path>

       Assign SRC as the child qgroup of DST

       --rescan       schedule qutoa rescan if needed
       --no-rescan

   ==================================================

* expected result

   ==================================================
   # ./btrfs qgroup assign --rescan 0/260 1/261 /btrfs
   #
   ==================================================

Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
---
  cmds-qgroup.c | 62 ++++++++++++++++++++++++-----------------------------------
  1 file changed, 25 insertions(+), 37 deletions(-)

diff --git a/cmds-qgroup.c b/cmds-qgroup.c
index 7ae2253..ebd66ef 100644
--- a/cmds-qgroup.c
+++ b/cmds-qgroup.c
@@ -32,7 +32,8 @@ static const char * const qgroup_cmd_group_usage[] = {
  	NULL
  };

-static int _cmd_qgroup_assign(int assign, int argc, char **argv)
+static int _cmd_qgroup_assign(int assign, int argc, char **argv,
+			      const char * const *usage_str)
  {
  	int ret = 0;
  	int fd;
@@ -41,28 +42,31 @@ static int _cmd_qgroup_assign(int assign, int argc, char **argv)
  	struct btrfs_ioctl_qgroup_assign_args args;
  	DIR *dirstream = NULL;

-	while (1) {
-		enum { GETOPT_VAL_RESCAN = 256 };
-		static const struct option long_options[] = {
-			{ "rescan", no_argument, NULL, GETOPT_VAL_RESCAN },
-			{ NULL, 0, NULL, 0 }
-		};
-		int c = getopt_long(argc, argv, "", long_options, NULL);
-
-		if (c < 0)
-			break;
-		switch (c) {
-		case GETOPT_VAL_RESCAN:
-			rescan = 1;
-			break;
-		default:
-			/* Usage printed by the caller */
-			return -1;
+	if (assign) {
+		while (1) {
+			enum { GETOPT_VAL_RESCAN = 256 };
+			static const struct option long_options[] = {
+				{ "rescan", no_argument, NULL, GETOPT_VAL_RESCAN },
+				{ NULL, 0, NULL, 0 }
+			};
+			int c = getopt_long(argc, argv, "", long_options, NULL);
+
+			if (c < 0)
+				break;
+			switch (c) {
+			case GETOPT_VAL_RESCAN:
+				rescan = 1;
+				break;
+			default:
+				usage(usage_str);
+			}
  		}
+	} else {
+		clean_args_no_options(argc, argv, usage_str);
  	}

  	if (check_argc_exact(argc - optind, 3))
-		return -1;
+		usage(usage_str);

  	memset(&args, 0, sizeof(args));
  	args.assign = assign;
@@ -208,15 +212,7 @@ static const char * const cmd_qgroup_assign_usage[] = {

  static int cmd_qgroup_assign(int argc, char **argv)
  {
-	int ret;
-
-	clean_args_no_options(argc, argv, cmd_qgroup_assign_usage);
-
-	ret = _cmd_qgroup_assign(1, argc, argv);
-
-	if (ret < 0)
-		usage(cmd_qgroup_assign_usage);
-	return ret;
+	return _cmd_qgroup_assign(1, argc, argv, cmd_qgroup_assign_usage);
  }

  static const char * const cmd_qgroup_remove_usage[] = {
@@ -227,15 +223,7 @@ static const char * const cmd_qgroup_remove_usage[] = {

  static int cmd_qgroup_remove(int argc, char **argv)
  {
-	int ret;
-
-	clean_args_no_options(argc, argv, cmd_qgroup_remove_usage);
-
-	ret = _cmd_qgroup_assign(0, argc, argv);
-
-	if (ret < 0)
-		usage(cmd_qgroup_remove_usage);
-	return ret;
+	return _cmd_qgroup_assign(0, argc, argv, cmd_qgroup_remove_usage);
  }

  static const char * const cmd_qgroup_create_usage[] = {
-- 
2.7.0

  parent reply	other threads:[~2016-03-18  1:35 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-18  1:26 [PATCH 1/5] btrfs-progs: "sub get-default" doesn't work Satoru Takeuchi
2016-03-18  1:29 ` [PATCH 2/5] btrfs-progs: "qgroup create/destroy" don't work Satoru Takeuchi
2016-03-18  1:31 ` [PATCH 3/5] btrfs-progs: "inspect-internal subvolid-resolve" doesn't work Satoru Takeuchi
2016-03-18  1:35 ` Satoru Takeuchi [this message]
2016-03-18  1:36 ` [PATCH 5/5] btrfs-progs: qgroup assign can't handle --no-rescan option Satoru Takeuchi
2016-03-18 13:26 ` [PATCH 1/5] btrfs-progs: "sub get-default" doesn't work David Sterba

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=56EB5B53.1010806@jp.fujitsu.com \
    --to=takeuchi_satoru@jp.fujitsu.com \
    --cc=clm@fb.com \
    --cc=dsterba@suse.cz \
    --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.