[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAEf4BzZt75Wm29MQKx1g_u8cH2QYRF3HGYgnOpa3yF9NOMXysw@mail.gmail.com>
Date: Thu, 23 May 2019 09:20:52 -0700
From: Andrii Nakryiko <andrii.nakryiko@...il.com>
To: Quentin Monnet <quentin.monnet@...ronome.com>
Cc: Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>, bpf@...r.kernel.org,
Networking <netdev@...r.kernel.org>, oss-drivers@...ronome.com,
Yonghong Song <yhs@...com>
Subject: Re: [PATCH bpf-next v2 1/3] tools: bpftool: add -d option to get
debug output from libbpf
On Thu, May 23, 2019 at 3:54 AM Quentin Monnet
<quentin.monnet@...ronome.com> wrote:
>
> libbpf has three levels of priority for output messages: warn, info,
> debug. By default, debug output is not printed to the console.
>
> Add a new "--debug" (short name: "-d") option to bpftool to print libbpf
> logs for all three levels.
>
> Internally, we simply use the function provided by libbpf to replace the
> default printing function by one that prints logs regardless of their
> level.
>
> v2:
> - Remove the possibility to select the log-levels to use (v1 offered a
> combination of "warn", "info" and "debug").
> - Rename option and offer a short name: -d|--debug.
Such and option in CLI tools is usually called -v|--verbose, I'm
wondering if it might be a better name choice?
Btw, some tools also use -v, -vv and -vvv to define different levels
of verbosity, which is something we can consider in the future, as
it's backwards compatible.
> - Add option description to all bpftool manual pages (instead of
> bpftool-prog.rst only), as all commands use libbpf.
>
> Signed-off-by: Quentin Monnet <quentin.monnet@...ronome.com>
> Reviewed-by: Jakub Kicinski <jakub.kicinski@...ronome.com>
> ---
> tools/bpf/bpftool/Documentation/bpftool-btf.rst | 4 ++++
> tools/bpf/bpftool/Documentation/bpftool-cgroup.rst | 4 ++++
> .../bpf/bpftool/Documentation/bpftool-feature.rst | 4 ++++
> tools/bpf/bpftool/Documentation/bpftool-map.rst | 4 ++++
> tools/bpf/bpftool/Documentation/bpftool-net.rst | 4 ++++
> tools/bpf/bpftool/Documentation/bpftool-perf.rst | 4 ++++
> tools/bpf/bpftool/Documentation/bpftool-prog.rst | 4 ++++
> tools/bpf/bpftool/Documentation/bpftool.rst | 3 +++
> tools/bpf/bpftool/bash-completion/bpftool | 2 +-
> tools/bpf/bpftool/main.c | 14 +++++++++++++-
> 10 files changed, 45 insertions(+), 2 deletions(-)
>
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-btf.rst b/tools/bpf/bpftool/Documentation/bpftool-btf.rst
> index 2dbc1413fabd..00668df1bf7a 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-btf.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-btf.rst
> @@ -67,6 +67,10 @@ OPTIONS
> -p, --pretty
> Generate human-readable JSON output. Implies **-j**.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> EXAMPLES
> ========
> **# bpftool btf dump id 1226**
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
> index ac26876389c2..36807735e2a5 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-cgroup.rst
> @@ -113,6 +113,10 @@ OPTIONS
> -f, --bpffs
> Show file names of pinned programs.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> EXAMPLES
> ========
> |
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-feature.rst b/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> index 14180e887082..4d08f35034a2 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> @@ -73,6 +73,10 @@ OPTIONS
> -p, --pretty
> Generate human-readable JSON output. Implies **-j**.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> SEE ALSO
> ========
> **bpf**\ (2),
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-map.rst b/tools/bpf/bpftool/Documentation/bpftool-map.rst
> index 13ef27b39f20..490b4501cb6e 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-map.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-map.rst
> @@ -152,6 +152,10 @@ OPTIONS
> Do not automatically attempt to mount any virtual file system
> (such as tracefs or BPF virtual file system) when necessary.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> EXAMPLES
> ========
> **# bpftool map show**
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-net.rst b/tools/bpf/bpftool/Documentation/bpftool-net.rst
> index 934580850f42..d8e5237a2085 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-net.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-net.rst
> @@ -65,6 +65,10 @@ OPTIONS
> -p, --pretty
> Generate human-readable JSON output. Implies **-j**.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> EXAMPLES
> ========
>
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-perf.rst b/tools/bpf/bpftool/Documentation/bpftool-perf.rst
> index 0c7576523a21..e252bd0bc434 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-perf.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-perf.rst
> @@ -53,6 +53,10 @@ OPTIONS
> -p, --pretty
> Generate human-readable JSON output. Implies **-j**.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> EXAMPLES
> ========
>
> diff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst
> index e8118544d118..9a92614569e6 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst
> @@ -174,6 +174,10 @@ OPTIONS
> Do not automatically attempt to mount any virtual file system
> (such as tracefs or BPF virtual file system) when necessary.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
> +
> EXAMPLES
> ========
> **# bpftool prog show**
> diff --git a/tools/bpf/bpftool/Documentation/bpftool.rst b/tools/bpf/bpftool/Documentation/bpftool.rst
> index 3e562d7fd56f..43dba0717953 100644
> --- a/tools/bpf/bpftool/Documentation/bpftool.rst
> +++ b/tools/bpf/bpftool/Documentation/bpftool.rst
> @@ -66,6 +66,9 @@ OPTIONS
> Do not automatically attempt to mount any virtual file system
> (such as tracefs or BPF virtual file system) when necessary.
>
> + -d, --debug
> + Print all logs available from libbpf, including debug-level
> + information.
>
> SEE ALSO
> ========
> diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool
> index 50e402a5a9c8..3a476e25d046 100644
> --- a/tools/bpf/bpftool/bash-completion/bpftool
> +++ b/tools/bpf/bpftool/bash-completion/bpftool
> @@ -181,7 +181,7 @@ _bpftool()
>
> # Deal with options
> if [[ ${words[cword]} == -* ]]; then
> - local c='--version --json --pretty --bpffs --mapcompat'
> + local c='--version --json --pretty --bpffs --mapcompat --debug'
> COMPREPLY=( $( compgen -W "$c" -- "$cur" ) )
> return 0
> fi
> diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
> index 1ac1fc520e6a..d74293938a05 100644
> --- a/tools/bpf/bpftool/main.c
> +++ b/tools/bpf/bpftool/main.c
> @@ -10,6 +10,7 @@
> #include <string.h>
>
> #include <bpf.h>
> +#include <libbpf.h>
>
> #include "main.h"
>
> @@ -77,6 +78,13 @@ static int do_version(int argc, char **argv)
> return 0;
> }
>
> +static int __printf(2, 0)
> +print_all_levels(__maybe_unused enum libbpf_print_level level,
> + const char *format, va_list args)
> +{
> + return vfprintf(stderr, format, args);
> +}
> +
> int cmd_select(const struct cmd *cmds, int argc, char **argv,
> int (*help)(int argc, char **argv))
> {
> @@ -317,6 +325,7 @@ int main(int argc, char **argv)
> { "bpffs", no_argument, NULL, 'f' },
> { "mapcompat", no_argument, NULL, 'm' },
> { "nomount", no_argument, NULL, 'n' },
> + { "debug", no_argument, NULL, 'd' },
> { 0 }
> };
> int opt, ret;
> @@ -332,7 +341,7 @@ int main(int argc, char **argv)
> hash_init(map_table.table);
>
> opterr = 0;
> - while ((opt = getopt_long(argc, argv, "Vhpjfmn",
> + while ((opt = getopt_long(argc, argv, "Vhpjfmnd",
> options, NULL)) >= 0) {
> switch (opt) {
> case 'V':
> @@ -362,6 +371,9 @@ int main(int argc, char **argv)
> case 'n':
> block_mount = true;
> break;
> + case 'd':
> + libbpf_set_print(print_all_levels);
> + break;
> default:
> p_err("unrecognized option '%s'", argv[optind - 1]);
> if (json_output)
> --
> 2.17.1
>
Powered by blists - more mailing lists