{"id":833246,"url":"http://patchwork.ozlabs.org/api/1.2/patches/833246/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/20171102075917.2780-4-bhole_prashant_q7@lab.ntt.co.jp/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/1.2/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20171102075917.2780-4-bhole_prashant_q7@lab.ntt.co.jp>","list_archive_url":null,"date":"2017-11-02T07:59:17","name":"[net-next,V2,3/3] tools: bpftool: optionally show filenames of pinned objects","commit_ref":null,"pull_url":null,"state":"changes-requested","archived":true,"hash":"8fdb6301a2d508c216bb5e1d01fa5ac63d68d700","submitter":{"id":72702,"url":"http://patchwork.ozlabs.org/api/1.2/people/72702/?format=json","name":"Prashant Bhole","email":"bhole_prashant_q7@lab.ntt.co.jp"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/1.2/users/34/?format=json","username":"davem","first_name":"David","last_name":"Miller","email":"davem@davemloft.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/20171102075917.2780-4-bhole_prashant_q7@lab.ntt.co.jp/mbox/","series":[{"id":11451,"url":"http://patchwork.ozlabs.org/api/1.2/series/11451/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/list/?series=11451","date":"2017-11-02T07:59:15","name":"tools: bpftool: show filenames of pinned objects","version":2,"mbox":"http://patchwork.ozlabs.org/series/11451/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/833246/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/833246/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3ySHcB2yvWz9t2f\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu,  2 Nov 2017 19:02:02 +1100 (AEDT)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1755690AbdKBICA (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tThu, 2 Nov 2017 04:02:00 -0400","from tama50.ecl.ntt.co.jp ([129.60.39.147]:43420 \"EHLO\n\ttama50.ecl.ntt.co.jp\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1755657AbdKBIBo (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Thu, 2 Nov 2017 04:01:44 -0400","from vc2.ecl.ntt.co.jp (vc2.ecl.ntt.co.jp [129.60.86.154])\n\tby tama50.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id vA281ReA017510; \n\tThu, 2 Nov 2017 17:01:27 +0900","from vc2.ecl.ntt.co.jp (localhost [127.0.0.1])\n\tby vc2.ecl.ntt.co.jp (Postfix) with ESMTP id 069E75F69F;\n\tThu,  2 Nov 2017 17:01:27 +0900 (JST)","from jcms-pop21.ecl.ntt.co.jp (jcms-pop21.ecl.ntt.co.jp\n\t[129.60.87.134])\n\tby vc2.ecl.ntt.co.jp (Postfix) with ESMTP id EB6B960292;\n\tThu,  2 Nov 2017 17:01:26 +0900 (JST)","from jcms-pop21.ecl.ntt.co.jp (unknown [129.60.241.220])\n\tby jcms-pop21.ecl.ntt.co.jp (Postfix) with ESMTPSA id E4EDB400A80;\n\tThu,  2 Nov 2017 17:01:26 +0900 (JST)"],"From":"Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>","Subject":"[PATCH net-next V2 3/3] tools: bpftool: optionally show filenames\n\tof pinned objects","Date":"Thu,  2 Nov 2017 16:59:17 +0900","Message-Id":"<20171102075917.2780-4-bhole_prashant_q7@lab.ntt.co.jp>","X-Mailer":"git-send-email 2.14.2","In-Reply-To":"<20171102075917.2780-1-bhole_prashant_q7@lab.ntt.co.jp>","References":"<20171102075917.2780-1-bhole_prashant_q7@lab.ntt.co.jp>","To":"\"David S . Miller\" <davem@davemloft.net>","Cc":"Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>,\n\tnetdev@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,\n\tDaniel Borkmann <daniel@iogearbox.net>,\n\tQuentin Monnet <quentin.monnet@netronome.com>,\n\tJakub Kicinski <jakub.kicinski@netronome.com>","X-TM-AS-MML":"disable","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"Making it optional to show file names of pinned objects because\nit scans complete bpf-fs filesystem which is costly.\nAdded option -f|--bpffs. Documentation updated.\n\nSigned-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>\n---\nv2:\n - Change command line option from {-l|--pinned} to {-f|--bpffs}\n - Updated documentation\n\n tools/bpf/bpftool/Documentation/bpftool-map.rst  |  5 ++++-\n tools/bpf/bpftool/Documentation/bpftool-prog.rst |  5 ++++-\n tools/bpf/bpftool/main.c                         | 14 +++++++++++---\n tools/bpf/bpftool/main.h                         |  3 ++-\n tools/bpf/bpftool/map.c                          |  3 ++-\n tools/bpf/bpftool/prog.c                         |  3 ++-\n 6 files changed, 25 insertions(+), 8 deletions(-)","diff":"diff --git a/tools/bpf/bpftool/Documentation/bpftool-map.rst b/tools/bpf/bpftool/Documentation/bpftool-map.rst\nindex abb9ee940b15..543e82660a01 100644\n--- a/tools/bpf/bpftool/Documentation/bpftool-map.rst\n+++ b/tools/bpf/bpftool/Documentation/bpftool-map.rst\n@@ -12,7 +12,7 @@ SYNOPSIS\n \n \t**bpftool** [*OPTIONS*] **map** *COMMAND*\n \n-\t*OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] }\n+\t*OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-f** | **--bpffs** } }\n \n \t*COMMANDS* :=\n \t{ **show** | **dump** | **update** | **lookup** | **getnext** | **delete**\n@@ -86,6 +86,9 @@ OPTIONS\n \t-p, --pretty\n \t\t  Generate human-readable JSON output. Implies **-j**.\n \n+\t-f, --bpffs\n+\t\t  Show file names of pinned maps.\n+\n EXAMPLES\n ========\n **# bpftool map show**\ndiff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst\nindex 0f25d3c39e05..0b9ab9ca37d6 100644\n--- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst\n+++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst\n@@ -12,7 +12,7 @@ SYNOPSIS\n \n \t**bpftool** [*OPTIONS*] **prog** *COMMAND*\n \n-\t*OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] }\n+\t*OPTIONS* := { { **-j** | **--json** } [{ **-p** | **--pretty** }] | { **-f** | **--bpffs** } }\n \n \t*COMMANDS* :=\n \t{ **show** | **dump xlated** | **dump jited** | **pin** | **help** }\n@@ -75,6 +75,9 @@ OPTIONS\n \t-p, --pretty\n \t\t  Generate human-readable JSON output. Implies **-j**.\n \n+\t-f, --bpffs\n+\t\t  Show file names of pinned programs.\n+\n EXAMPLES\n ========\n **# bpftool prog show**\ndiff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c\nindex 6ad53f1797fa..d6e4762170a4 100644\n--- a/tools/bpf/bpftool/main.c\n+++ b/tools/bpf/bpftool/main.c\n@@ -54,6 +54,7 @@ static int (*last_do_help)(int argc, char **argv);\n json_writer_t *json_wtr;\n bool pretty_output;\n bool json_output;\n+bool show_pinned;\n struct pinned_obj_table prog_table;\n struct pinned_obj_table map_table;\n \n@@ -265,6 +266,7 @@ int main(int argc, char **argv)\n \t\t{ \"help\",\tno_argument,\tNULL,\t'h' },\n \t\t{ \"pretty\",\tno_argument,\tNULL,\t'p' },\n \t\t{ \"version\",\tno_argument,\tNULL,\t'V' },\n+\t\t{ \"bpffs\",\tno_argument,\tNULL,\t'f' },\n \t\t{ 0 }\n \t};\n \tint opt, ret;\n@@ -272,12 +274,13 @@ int main(int argc, char **argv)\n \tlast_do_help = do_help;\n \tpretty_output = false;\n \tjson_output = false;\n+\tshow_pinned = false;\n \tbin_name = argv[0];\n \n \thash_init(prog_table.table);\n \thash_init(map_table.table);\n \n-\twhile ((opt = getopt_long(argc, argv, \"Vhpj\",\n+\twhile ((opt = getopt_long(argc, argv, \"Vhpjf\",\n \t\t\t\t  options, NULL)) >= 0) {\n \t\tswitch (opt) {\n \t\tcase 'V':\n@@ -290,6 +293,9 @@ int main(int argc, char **argv)\n \t\tcase 'j':\n \t\t\tjson_output = true;\n \t\t\tbreak;\n+\t\tcase 'f':\n+\t\t\tshow_pinned = true;\n+\t\t\tbreak;\n \t\tdefault:\n \t\t\tusage();\n \t\t}\n@@ -316,8 +322,10 @@ int main(int argc, char **argv)\n \tif (json_output)\n \t\tjsonw_destroy(&json_wtr);\n \n-\tdelete_pinned_obj_table(&prog_table);\n-\tdelete_pinned_obj_table(&map_table);\n+\tif (show_pinned) {\n+\t\tdelete_pinned_obj_table(&prog_table);\n+\t\tdelete_pinned_obj_table(&map_table);\n+\t}\n \n \treturn ret;\n }\ndiff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h\nindex bd6d0663228b..10bc00758246 100644\n--- a/tools/bpf/bpftool/main.h\n+++ b/tools/bpf/bpftool/main.h\n@@ -59,7 +59,7 @@\n #define HELP_SPEC_PROGRAM\t\t\t\t\t\t\\\n \t\"PROG := { id PROG_ID | pinned FILE | tag PROG_TAG }\"\n #define HELP_SPEC_OPTIONS\t\t\t\t\t\t\\\n-\t\"OPTIONS := { {-j|--json} [{-p|--pretty}] }\"\n+\t\"OPTIONS := { {-j|--json} [{-p|--pretty}] | {-f|--bpffs} }\"\n \n enum bpf_obj_type {\n \tBPF_OBJ_UNKNOWN,\n@@ -71,6 +71,7 @@ extern const char *bin_name;\n \n extern json_writer_t *json_wtr;\n extern bool json_output;\n+extern bool show_pinned;\n extern struct pinned_obj_table prog_table;\n extern struct pinned_obj_table map_table;\n \ndiff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c\nindex de0980657cef..e2450c8e88e6 100644\n--- a/tools/bpf/bpftool/map.c\n+++ b/tools/bpf/bpftool/map.c\n@@ -497,7 +497,8 @@ static int do_show(int argc, char **argv)\n \tint err;\n \tint fd;\n \n-\tbuild_pinned_obj_table(&map_table, BPF_OBJ_MAP);\n+\tif (show_pinned)\n+\t\tbuild_pinned_obj_table(&map_table, BPF_OBJ_MAP);\n \n \tif (argc == 2) {\n \t\tfd = map_parse_fd_and_info(&argc, &argv, &info, &len);\ndiff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c\nindex 11375f669fc0..ad619b96c276 100644\n--- a/tools/bpf/bpftool/prog.c\n+++ b/tools/bpf/bpftool/prog.c\n@@ -351,7 +351,8 @@ static int do_show(int argc, char **argv)\n \tint err;\n \tint fd;\n \n-\tbuild_pinned_obj_table(&prog_table, BPF_OBJ_PROG);\n+\tif (show_pinned)\n+\t\tbuild_pinned_obj_table(&prog_table, BPF_OBJ_PROG);\n \n \tif (argc == 2) {\n \t\tfd = prog_parse_fd(&argc, &argv);\n","prefixes":["net-next","V2","3/3"]}