From: Anand Jain <anand.jain@oracle.com>
To: David Sterba <dsterba@suse.com>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH v2 00/16] btrfs-progs: global verbose and quiet option
Date: Tue, 14 Jan 2020 14:14:24 +0800 [thread overview]
Message-ID: <8a2bac99-5c07-2aa9-fe3b-e09f2ad16213@oracle.com> (raw)
In-Reply-To: <1574678357-22222-1-git-send-email-anand.jain@oracle.com>
David,
I wonder if could this be integrated?
Thanks, Anand
On 25/11/19 6:39 PM, Anand Jain wrote:
> v1.1->v2:
> Mainly:
> . Splits define HELPINFO_INSERT_GLOBALS from --format option and
> . Rename HELPINFO_GLOBAL_OPTIONS_HEADER to HELPINFO_INSERT_GLOBALS
> . Create and use helper bconf_be_verbose() and bconf_be_quiet().
> . Use gobal bconf.verbose where possible and drop local verbose argument passing.
> . In some patches the bconf.verbose initialization wasn't necessary so drop it.
> Some small fixes as mentioned in the individual patch.
>
> v1->v1.1:
> . Fix typo in HELPINFO_INSERT_QUIET.
> . Remove #include <stdbool.h> where its no more required.
> (was needed when %bconf.verbose was declared as bool).
> . Use pr_verbose(-1,..) instead of all conditions printf()
> . Use pr_verbose(1,..) instead of pr_verbose(true,..)
>
> verbosity sample code as in v1.1
>
> global init
> -----------
> bconf.verbose = -1; //-1:default, 0:quiet, >1:verbose
>
> at global options
> -----------------
> case 'v':
> bconf.verbose < 0 ? bconf.verbose = 1 : bconf.verbose++;
> break;
> case 'q':
> bconf.verbose = 0;
> break;
>
> sub-command init
> ----------------
> For send/receive only (special cases, default verbosity is 1):
>
> if (bconf.verbose < 0)
> bconf.verbose = 1;
> else if (bconf.verbose > 0)
> bconf.verbose++;
>
> Non-send/receive:
> default verbosity is 0 (ref: cmds/rescue.c)
> if (bconf.verbose < 0)
> bconf.verbose = 0;
>
> at sub-command options
> ----------------------
> case 'v':
> bconf.verbose++;
> break;
> case 'q':
> bconf.verbose = 0;
> break;
>
>
> pr_verbose()
> ------------
> /*
> * level -1: prints message unless bconf.verbose == 0;
> * level 0: quiet
> * level >0: prints message only if <= bconf.verbose
> */
> void pr_verbose(int level, const char *fmt, ...)
> {
> va_list args;
>
> if (level == 0 || bconf.verbose == 0)
> return;
>
> if (level > bconf.verbose)
> return;
>
> va_start(args, fmt);
> vfprintf(stdout, fmt, args);
> va_end(args);
> }
>
>
> RFC->v1:
> .. Adds --quiet option to the global btrfs(8) command.
> .. Used global struct bconf.
> .. Refactored pr_verbose(), accepts level (int) as argument, so now the
> sub-command can specify the verbose level at which the particular
> verbose messages has to be printed.
> .. Added global help defines.
>
> Kindly note the following:-
>
> 1.
> There are certain sub-commands which does not have any verbose output
> or quiet output. However if the global options were used with those
> sub-commands then the command shall not report any usage error. Or
> my question is should it error out.? For example:
> (with the patch) btrfs --verbose device ready /dev/sdb
> actually there isn't any verbose output but we won't error out.
> Similarly,
> (without the patch) btrfs send -vvvvv will not show usage error
> as well.
> So I believe this is fine. IMO.
>
> 2.
> There is slight difference in output when global options are used
> as compared to the output using the same sequence of options at the
> sub-command level. For example:
>
> btrfs send -v -q -v is-equal-to btrfs send
> But same sequence in the global option
> btrfs -v -q -v send is-not-equal-to btrfs send
> but is-equal-to btrfs -v send or btrfs send -v.
> (similarly applies to receive as well).
>
> which IMO is fair expectation as -v is ending last.
>
>
> RFC:
> This patch set brings --verbose option to the top level btrfs command,
> such as 'btrfs --verbose'. With this we don't have to add or remember
> verbose option at the sub-commands level.
>
> As there are already verbose options to 11 sub-commands as listed
> below [1][2]. So the top level --verbose option here takes care to transpire
> verbose request from the top level to the sub-command level for 9 (not 11)
> sub-commands as in [1] as of now.
>
> This patch is RFC still for the following two reasons (comments appreciated).
>
> 1.
> The sub-commands as in [2] uses multi-level compile time verbose option,
> such as %g_verbose = 0 (quite), %g_verbose = 1 (default), %g_verbose > 1
> (real-verbose). And verbose at default is also part the .out files in
> fstests. So it needs further discussions on how to handle the multi-
> level verbose option using the global verbose option, and so sub-
> commands in [2] are untouched.
>
> 2.
> These patch has been unit-tested individually.
> These patches does not alter the verbose output.
> But it fixes the indentation in the command's help output, which may be
> used in fstests and btrfs-progs/tests and their verification is pending
> still, which I am planning to do it before v1.
>
> [1]
> btrfs subvolume delete --help
> -v|--verbose verbose output of operations
> btrfs filesystem defragment --help
> -v be verbose
> btrfs balance start --help
> -v|--verbose be verbose
> btrfs balance status --help
> -v|--verbose be verbose
> btrfs rescue chunk-recover --help
> -v Verbose mode
> btrfs rescue super-recover --help
> -v Verbose mode
> btrfs restore --help
> -v|--verbose verbose
> btrfs inspect-internal inode-resolve --help
> -v verbose mode
> btrfs inspect-internal logical-resolve --help
> -v verbose mode
>
> [2]
> btrfs send --help
> -v|--verbose enable verbose output to stderr, each occurrence of
> btrfs receive --help
> -v increase verbosity about performed action
>
>
>
> Anand Jain (16):
> btrfs-progs: split global help HELPINFO_INSERT_GLOBALS
> btrfs-progs: add global verbose and quiet options and helper functions
> btrfs-progs: send: use global verbose and quiet options
> btrfs-progs: receive: use global verbose and quiet options
> btrfs-progs: subvolume delete: use global verbose option
> btrfs-progs: filesystem defragment: use global verbose option
> btrfs-progs: balance start: use global verbose option
> btrfs-progs: balance status: use global verbose option
> btrfs-progs: rescue chunk-recover: use global verbose option
> btrfs-progs: rescue super-recover: use global verbose option
> btrfs-progs: restore: use global verbose option
> btrfs-progs: inspect-internal inode-resolve: use global verbose
> btrfs-progs: inspect-internal logical-resolve: use global verbose
> option
> btrfs-progs: refactor btrfs_scan_devices() to accept verbose argument
> btrfs-progs: device scan: add verbose option
> btrfs-progs: device scan: add quiet option
>
> btrfs.c | 20 ++++++++++--
> cmds/balance.c | 14 ++++----
> cmds/device.c | 7 ++--
> cmds/filesystem.c | 14 ++++----
> cmds/inspect.c | 41 +++++++++++------------
> cmds/receive.c | 80 +++++++++++++++++++++++++--------------------
> cmds/rescue-chunk-recover.c | 9 +++--
> cmds/rescue-super-recover.c | 7 ++--
> cmds/rescue.c | 18 ++++++----
> cmds/rescue.h | 4 +--
> cmds/restore.c | 53 +++++++++++++-----------------
> cmds/send.c | 33 ++++++++++++-------
> cmds/subvolume.c | 28 ++++++++--------
> common/device-scan.c | 3 +-
> common/device-scan.h | 2 +-
> common/help.c | 4 +--
> common/help.h | 9 ++++-
> common/messages.c | 25 ++++++++++++++
> common/messages.h | 3 ++
> common/utils.c | 16 ++++++++-
> common/utils.h | 11 +++++++
> disk-io.c | 2 +-
> 22 files changed, 245 insertions(+), 158 deletions(-)
>
next prev parent reply other threads:[~2020-01-14 6:14 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-25 10:39 [PATCH v2 00/16] btrfs-progs: global verbose and quiet option Anand Jain
2019-11-25 10:39 ` [PATCH 01/16] btrfs-progs: split global help HELPINFO_INSERT_GLOBALS Anand Jain
2019-11-25 10:39 ` [PATCH v2 02/16] btrfs-progs: add global verbose and quiet options and helper functions Anand Jain
2020-06-12 10:56 ` [PATCH v3 " Anand Jain
2020-06-12 15:39 ` David Sterba
2020-06-12 22:48 ` Anand Jain
2020-06-23 16:44 ` David Sterba
2020-06-29 15:36 ` David Sterba
2019-11-25 10:39 ` [PATCH v2 03/16] btrfs-progs: send: use global verbose and quiet options Anand Jain
2020-06-12 10:58 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 04/16] btrfs-progs: receive: " Anand Jain
2020-06-12 11:24 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 05/16] btrfs-progs: subvolume delete: use global verbose option Anand Jain
2020-06-12 11:24 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 06/16] btrfs-progs: filesystem defragment: " Anand Jain
2020-06-08 6:31 ` Anand Jain
2020-06-11 16:56 ` [PATCH v3 " Anand Jain
2020-06-12 11:25 ` [PATCH v4 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 07/16] btrfs-progs: balance start: " Anand Jain
2020-06-12 11:25 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 08/16] btrfs-progs: balance status: " Anand Jain
2020-06-12 11:25 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 09/16] btrfs-progs: rescue chunk-recover: " Anand Jain
2020-06-12 11:25 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 10/16] btrfs-progs: rescue super-recover: " Anand Jain
2020-06-12 11:25 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 11/16] btrfs-progs: restore: " Anand Jain
2020-06-12 11:26 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 12/16] btrfs-progs: inspect-internal inode-resolve: use global verbose Anand Jain
2020-06-12 11:26 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH v2 13/16] btrfs-progs: inspect-internal logical-resolve: use global verbose option Anand Jain
2020-06-12 11:26 ` [PATCH v3 " Anand Jain
2019-11-25 10:39 ` [PATCH 14/16] btrfs-progs: refactor btrfs_scan_devices() to accept verbose argument Anand Jain
2019-11-25 10:39 ` [PATCH v2 15/16] btrfs-progs: device scan: add verbose option Anand Jain
2019-11-25 10:39 ` [PATCH 16/16] btrfs-progs: device scan: add quiet option Anand Jain
2019-12-20 5:36 ` [PATCH v2 00/16] btrfs-progs: global verbose and " Anand Jain
2020-01-14 6:14 ` Anand Jain [this message]
2020-01-14 11:40 ` David Sterba
2020-03-28 5:45 ` Anand Jain
2020-05-20 10:01 ` Anand Jain
2020-06-05 9:24 ` David Sterba
2020-06-05 10:12 ` Anand Jain
2020-06-10 10:17 ` David Sterba
2020-06-11 18:13 ` Anand Jain
2020-06-11 16:36 ` [PATCH v3 02/16] btrfs-progs: add global verbose and quiet options and helper functions Anand Jain
2020-06-11 16:39 ` [PATCH v3 11/16] btrfs-progs: restore: use global verbose option Anand Jain
2020-06-11 16:41 ` [PATCH v2 16/16] btrfs-progs: device scan: add quiet option 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=8a2bac99-5c07-2aa9-fe3b-e09f2ad16213@oracle.com \
--to=anand.jain@oracle.com \
--cc=dsterba@suse.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 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).