public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [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