linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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(-)
> 


  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).