* [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
@ 2022-08-29 23:18 Hao Luo
2022-08-30 13:33 ` Quentin Monnet
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Hao Luo @ 2022-08-29 23:18 UTC (permalink / raw)
To: linux-kernel, bpf
Cc: Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
Martin KaFai Lau, Song Liu, Yonghong Song, KP Singh,
John Fastabend, Stanislav Fomichev, Jiri Olsa, Yosry Ahmed,
Quentin Monnet, Hao Luo
Support dumping info of a cgroup_iter link. This includes
showing the cgroup's id and the order for walking the cgroup
hierarchy. Example output is as follows:
> bpftool link show
1: iter prog 2 target_name bpf_map
2: iter prog 3 target_name bpf_prog
3: iter prog 12 target_name cgroup cgroup_id 72 order self_only
> bpftool -p link show
[{
"id": 1,
"type": "iter",
"prog_id": 2,
"target_name": "bpf_map"
},{
"id": 2,
"type": "iter",
"prog_id": 3,
"target_name": "bpf_prog"
},{
"id": 3,
"type": "iter",
"prog_id": 12,
"target_name": "cgroup",
"cgroup_id": 72,
"order": "self_only"
}
]
Signed-off-by: Hao Luo <haoluo@google.com>
---
tools/bpf/bpftool/link.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/tools/bpf/bpftool/link.c b/tools/bpf/bpftool/link.c
index 7a20931c3250..9e8d14d0114d 100644
--- a/tools/bpf/bpftool/link.c
+++ b/tools/bpf/bpftool/link.c
@@ -83,6 +83,29 @@ static bool is_iter_map_target(const char *target_name)
strcmp(target_name, "bpf_sk_storage_map") == 0;
}
+static bool is_iter_cgroup_target(const char *target_name)
+{
+ return strcmp(target_name, "cgroup") == 0;
+}
+
+static const char *cgroup_order_string(__u32 order)
+{
+ switch (order) {
+ case BPF_CGROUP_ITER_ORDER_UNSPEC:
+ return "order_unspec";
+ case BPF_CGROUP_ITER_SELF_ONLY:
+ return "self_only";
+ case BPF_CGROUP_ITER_DESCENDANTS_PRE:
+ return "descendants_pre";
+ case BPF_CGROUP_ITER_DESCENDANTS_POST:
+ return "descendants_post";
+ case BPF_CGROUP_ITER_ANCESTORS_UP:
+ return "ancestors_up";
+ default: /* won't happen */
+ return "";
+ }
+}
+
static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr)
{
const char *target_name = u64_to_ptr(info->iter.target_name);
@@ -91,6 +114,12 @@ static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr)
if (is_iter_map_target(target_name))
jsonw_uint_field(wtr, "map_id", info->iter.map.map_id);
+
+ if (is_iter_cgroup_target(target_name)) {
+ jsonw_lluint_field(wtr, "cgroup_id", info->iter.cgroup.cgroup_id);
+ jsonw_string_field(wtr, "order",
+ cgroup_order_string(info->iter.cgroup.order));
+ }
}
static int get_prog_info(int prog_id, struct bpf_prog_info *info)
@@ -208,6 +237,12 @@ static void show_iter_plain(struct bpf_link_info *info)
if (is_iter_map_target(target_name))
printf("map_id %u ", info->iter.map.map_id);
+
+ if (is_iter_cgroup_target(target_name)) {
+ printf("cgroup_id %llu ", info->iter.cgroup.cgroup_id);
+ printf("order %s ",
+ cgroup_order_string(info->iter.cgroup.order));
+ }
}
static int show_link_close_plain(int fd, struct bpf_link_info *info)
--
2.37.2.672.g94769d06f0-goog
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
2022-08-29 23:18 [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link Hao Luo
@ 2022-08-30 13:33 ` Quentin Monnet
2022-08-30 18:06 ` Martin KaFai Lau
2022-08-30 16:41 ` Yonghong Song
2022-08-30 18:10 ` patchwork-bot+netdevbpf
2 siblings, 1 reply; 7+ messages in thread
From: Quentin Monnet @ 2022-08-30 13:33 UTC (permalink / raw)
To: Hao Luo, linux-kernel, bpf
Cc: Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
Martin KaFai Lau, Song Liu, Yonghong Song, KP Singh,
John Fastabend, Stanislav Fomichev, Jiri Olsa, Yosry Ahmed
On 30/08/2022 00:18, Hao Luo wrote:
> Support dumping info of a cgroup_iter link. This includes
> showing the cgroup's id and the order for walking the cgroup
> hierarchy. Example output is as follows:
>
>> bpftool link show
> 1: iter prog 2 target_name bpf_map
> 2: iter prog 3 target_name bpf_prog
> 3: iter prog 12 target_name cgroup cgroup_id 72 order self_only
>
>> bpftool -p link show
> [{
> "id": 1,
> "type": "iter",
> "prog_id": 2,
> "target_name": "bpf_map"
> },{
> "id": 2,
> "type": "iter",
> "prog_id": 3,
> "target_name": "bpf_prog"
> },{
> "id": 3,
> "type": "iter",
> "prog_id": 12,
> "target_name": "cgroup",
> "cgroup_id": 72,
> "order": "self_only"
> }
> ]
>
> Signed-off-by: Hao Luo <haoluo@google.com>
> ---
> tools/bpf/bpftool/link.c | 35 +++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> diff --git a/tools/bpf/bpftool/link.c b/tools/bpf/bpftool/link.c
> index 7a20931c3250..9e8d14d0114d 100644
> --- a/tools/bpf/bpftool/link.c
> +++ b/tools/bpf/bpftool/link.c
> @@ -83,6 +83,29 @@ static bool is_iter_map_target(const char *target_name)
> strcmp(target_name, "bpf_sk_storage_map") == 0;
> }
>
> +static bool is_iter_cgroup_target(const char *target_name)
> +{
> + return strcmp(target_name, "cgroup") == 0;
> +}
> +
> +static const char *cgroup_order_string(__u32 order)
> +{
> + switch (order) {
> + case BPF_CGROUP_ITER_ORDER_UNSPEC:
> + return "order_unspec";
> + case BPF_CGROUP_ITER_SELF_ONLY:
> + return "self_only";
> + case BPF_CGROUP_ITER_DESCENDANTS_PRE:
> + return "descendants_pre";
> + case BPF_CGROUP_ITER_DESCENDANTS_POST:
> + return "descendants_post";
> + case BPF_CGROUP_ITER_ANCESTORS_UP:
> + return "ancestors_up";
> + default: /* won't happen */
> + return "";
I wonder if that one should be "unknown", in case another option is
added in the future, so we can spot it and address it?
> + }
> +}
> +
> static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr)
> {
> const char *target_name = u64_to_ptr(info->iter.target_name);
> @@ -91,6 +114,12 @@ static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr)
>
> if (is_iter_map_target(target_name))
> jsonw_uint_field(wtr, "map_id", info->iter.map.map_id);
> +
> + if (is_iter_cgroup_target(target_name)) {
> + jsonw_lluint_field(wtr, "cgroup_id", info->iter.cgroup.cgroup_id);
> + jsonw_string_field(wtr, "order",
> + cgroup_order_string(info->iter.cgroup.order));
> + }
> }
>
> static int get_prog_info(int prog_id, struct bpf_prog_info *info)
> @@ -208,6 +237,12 @@ static void show_iter_plain(struct bpf_link_info *info)
>
> if (is_iter_map_target(target_name))
> printf("map_id %u ", info->iter.map.map_id);
> +
> + if (is_iter_cgroup_target(target_name)) {
> + printf("cgroup_id %llu ", info->iter.cgroup.cgroup_id);
> + printf("order %s ",
> + cgroup_order_string(info->iter.cgroup.order));
> + }
> }
>
> static int show_link_close_plain(int fd, struct bpf_link_info *info)
Looks good to me, thank you!
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
2022-08-29 23:18 [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link Hao Luo
2022-08-30 13:33 ` Quentin Monnet
@ 2022-08-30 16:41 ` Yonghong Song
2022-08-30 18:20 ` Hao Luo
2022-08-30 18:10 ` patchwork-bot+netdevbpf
2 siblings, 1 reply; 7+ messages in thread
From: Yonghong Song @ 2022-08-30 16:41 UTC (permalink / raw)
To: Hao Luo, linux-kernel, bpf
Cc: Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann,
Martin KaFai Lau, Song Liu, KP Singh, John Fastabend,
Stanislav Fomichev, Jiri Olsa, Yosry Ahmed, Quentin Monnet
On 8/29/22 4:18 PM, Hao Luo wrote:
> Support dumping info of a cgroup_iter link. This includes
> showing the cgroup's id and the order for walking the cgroup
> hierarchy. Example output is as follows:
>
>> bpftool link show
> 1: iter prog 2 target_name bpf_map
> 2: iter prog 3 target_name bpf_prog
> 3: iter prog 12 target_name cgroup cgroup_id 72 order self_only
>
>> bpftool -p link show
> [{
> "id": 1,
> "type": "iter",
> "prog_id": 2,
> "target_name": "bpf_map"
> },{
> "id": 2,
> "type": "iter",
> "prog_id": 3,
> "target_name": "bpf_prog"
> },{
> "id": 3,
> "type": "iter",
> "prog_id": 12,
> "target_name": "cgroup",
> "cgroup_id": 72,
> "order": "self_only"
> }
> ]
>
> Signed-off-by: Hao Luo <haoluo@google.com>
Acked-by: Yonghong Song <yhs@fb.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
2022-08-30 13:33 ` Quentin Monnet
@ 2022-08-30 18:06 ` Martin KaFai Lau
2022-08-30 18:19 ` Hao Luo
0 siblings, 1 reply; 7+ messages in thread
From: Martin KaFai Lau @ 2022-08-30 18:06 UTC (permalink / raw)
To: Quentin Monnet, Hao Luo
Cc: linux-kernel, bpf, Alexei Starovoitov, Andrii Nakryiko,
Daniel Borkmann, Martin KaFai Lau, Song Liu, Yonghong Song,
KP Singh, John Fastabend, Stanislav Fomichev, Jiri Olsa,
Yosry Ahmed
On Tue, Aug 30, 2022 at 02:33:47PM +0100, Quentin Monnet wrote:
> > +static const char *cgroup_order_string(__u32 order)
> > +{
> > + switch (order) {
> > + case BPF_CGROUP_ITER_ORDER_UNSPEC:
> > + return "order_unspec";
> > + case BPF_CGROUP_ITER_SELF_ONLY:
> > + return "self_only";
> > + case BPF_CGROUP_ITER_DESCENDANTS_PRE:
> > + return "descendants_pre";
> > + case BPF_CGROUP_ITER_DESCENDANTS_POST:
> > + return "descendants_post";
> > + case BPF_CGROUP_ITER_ANCESTORS_UP:
> > + return "ancestors_up";
> > + default: /* won't happen */
> > + return "";
>
> I wonder if that one should be "unknown", in case another option is
> added in the future, so we can spot it and address it?
I added "unknown" and applied.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
2022-08-29 23:18 [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link Hao Luo
2022-08-30 13:33 ` Quentin Monnet
2022-08-30 16:41 ` Yonghong Song
@ 2022-08-30 18:10 ` patchwork-bot+netdevbpf
2 siblings, 0 replies; 7+ messages in thread
From: patchwork-bot+netdevbpf @ 2022-08-30 18:10 UTC (permalink / raw)
To: Hao Luo
Cc: linux-kernel, bpf, ast, andrii, daniel, martin.lau, song, yhs,
kpsingh, john.fastabend, sdf, jolsa, yosryahmed, quentin
Hello:
This patch was applied to bpf/bpf-next.git (master)
by Martin KaFai Lau <martin.lau@linux.dev>:
On Mon, 29 Aug 2022 16:18:28 -0700 you wrote:
> Support dumping info of a cgroup_iter link. This includes
> showing the cgroup's id and the order for walking the cgroup
> hierarchy. Example output is as follows:
>
> > bpftool link show
> 1: iter prog 2 target_name bpf_map
> 2: iter prog 3 target_name bpf_prog
> 3: iter prog 12 target_name cgroup cgroup_id 72 order self_only
>
> [...]
Here is the summary with links:
- [bpf-next,v1] bpftool: Add support for querying cgroup_iter link
https://git.kernel.org/bpf/bpf-next/c/6f95de6d7131
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
2022-08-30 18:06 ` Martin KaFai Lau
@ 2022-08-30 18:19 ` Hao Luo
0 siblings, 0 replies; 7+ messages in thread
From: Hao Luo @ 2022-08-30 18:19 UTC (permalink / raw)
To: Martin KaFai Lau
Cc: Quentin Monnet, linux-kernel, bpf, Alexei Starovoitov,
Andrii Nakryiko, Daniel Borkmann, Martin KaFai Lau, Song Liu,
Yonghong Song, KP Singh, John Fastabend, Stanislav Fomichev,
Jiri Olsa, Yosry Ahmed
On Tue, Aug 30, 2022 at 11:06 AM Martin KaFai Lau <kafai@fb.com> wrote:
>
> On Tue, Aug 30, 2022 at 02:33:47PM +0100, Quentin Monnet wrote:
> > > +static const char *cgroup_order_string(__u32 order)
> > > +{
> > > + switch (order) {
> > > + case BPF_CGROUP_ITER_ORDER_UNSPEC:
> > > + return "order_unspec";
> > > + case BPF_CGROUP_ITER_SELF_ONLY:
> > > + return "self_only";
> > > + case BPF_CGROUP_ITER_DESCENDANTS_PRE:
> > > + return "descendants_pre";
> > > + case BPF_CGROUP_ITER_DESCENDANTS_POST:
> > > + return "descendants_post";
> > > + case BPF_CGROUP_ITER_ANCESTORS_UP:
> > > + return "ancestors_up";
> > > + default: /* won't happen */
> > > + return "";
> >
> > I wonder if that one should be "unknown", in case another option is
> > added in the future, so we can spot it and address it?
> I added "unknown" and applied.
Thanks Martin and Quentin, "unknown" is better than an empty string.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link
2022-08-30 16:41 ` Yonghong Song
@ 2022-08-30 18:20 ` Hao Luo
0 siblings, 0 replies; 7+ messages in thread
From: Hao Luo @ 2022-08-30 18:20 UTC (permalink / raw)
To: Yonghong Song
Cc: linux-kernel, bpf, Alexei Starovoitov, Andrii Nakryiko,
Daniel Borkmann, Martin KaFai Lau, Song Liu, KP Singh,
John Fastabend, Stanislav Fomichev, Jiri Olsa, Yosry Ahmed,
Quentin Monnet
On Tue, Aug 30, 2022 at 9:41 AM Yonghong Song <yhs@fb.com> wrote:
>
> On 8/29/22 4:18 PM, Hao Luo wrote:
[...]
> >
> > Signed-off-by: Hao Luo <haoluo@google.com>
>
> Acked-by: Yonghong Song <yhs@fb.com>
Thanks Yonghong.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-08-30 18:20 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-29 23:18 [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link Hao Luo
2022-08-30 13:33 ` Quentin Monnet
2022-08-30 18:06 ` Martin KaFai Lau
2022-08-30 18:19 ` Hao Luo
2022-08-30 16:41 ` Yonghong Song
2022-08-30 18:20 ` Hao Luo
2022-08-30 18:10 ` patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox