Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp4219829rwe; Tue, 30 Aug 2022 06:40:57 -0700 (PDT) X-Google-Smtp-Source: AA6agR77PXtiQbQVOsZtHS7sbVxJLJxz9pJb3zXbFnA4Ba3Ki0B4M3IoRKClIMDS5McmgDUUf/W1 X-Received: by 2002:a17:906:730e:b0:731:48fe:3f10 with SMTP id di14-20020a170906730e00b0073148fe3f10mr18153326ejc.185.1661866857050; Tue, 30 Aug 2022 06:40:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661866857; cv=none; d=google.com; s=arc-20160816; b=BisQpHvdphwhFDfEKjqiI3HfTF/iyWWNjhdJQT8d/tD3lk370WzUd0U53Ig1hPnqC9 KyoMXQOxqYi+ZrUNk3YDwGV0qauDfdUQX83/E10K9MiYtucesThmgiIQVzO5ZgOhYE8k kbdeJ3Zwakx3ZHWBlNpTJOKK8+vQ1z5FDO2MKIpKoAh5RX64Rt6TZlTFjL/xkntQb5wi EhgoPg+xAxOUhiN/mL+pYofU9CSVM3OKqWaJFoIsdDmipwQhX1SyqihLpLajfLqrB1Yx 8PJRzHLNAesWqHS5fb7zakTdIetkBQJbbZhfr3S4rM48Du5aOd+qnSeWHzeC5smFKtK4 DBEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=4Xzmly2VXzYLFnlkqo9YsSvrz1tmikNREb7p3AF7Jgs=; b=nI4AgrYLKsPQgBu3vCstfgjjZr6d/iokv3jKgZLVWl0NYS4rqNL/3JX2C+xNfJu5d8 oVM+OmfWsQd1puf9UQOa09ZP/edZFt1Vx5kftIocPPyhGcF4ha8MwfnYBtkmlWv1VJCx a3Zf8Qp5q7Zh4QPwjVGmZP1JHyb5WsfKJtkct/xbO9C6PQXiJdqX2CRzU7Tx8eI+oD56 oDiec8FvXqM7FohuubqQWmdLVd0TmBdgWqFS+o2EWJzTNQiOk1ZsKdhCTm88r6dtXpQx Z24cSKysiWTWxpE2gveeIpEWKpGJmdishN7S6OMCKfGe5sBuOLn1dfOz4aSI6JMt9ZME 5hZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@isovalent-com.20210112.gappssmtp.com header.s=20210112 header.b=Rv7Z7yMf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=isovalent.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s2-20020a508d02000000b0044721557358si8013435eds.130.2022.08.30.06.40.31; Tue, 30 Aug 2022 06:40:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@isovalent-com.20210112.gappssmtp.com header.s=20210112 header.b=Rv7Z7yMf; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=isovalent.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230369AbiH3Ndz (ORCPT + 99 others); Tue, 30 Aug 2022 09:33:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230038AbiH3Ndx (ORCPT ); Tue, 30 Aug 2022 09:33:53 -0400 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9BF3DEA7D for ; Tue, 30 Aug 2022 06:33:50 -0700 (PDT) Received: by mail-wr1-x42c.google.com with SMTP id e20so14218991wri.13 for ; Tue, 30 Aug 2022 06:33:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=isovalent-com.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc; bh=4Xzmly2VXzYLFnlkqo9YsSvrz1tmikNREb7p3AF7Jgs=; b=Rv7Z7yMfdEnua+5b0wfLqIbckYloVUNGwFAj0h2xnI594kQK46t9bNsCiWilFuPeqU jNRjZvlfU/g2QbUNd2gXjJtthQ9qluWHjhXqHZpIdcoUM7wF6lsfLp+8/+PScMtslYXa gpLPcQDFLKxE4TnohIEHX9Rivc/TpDIbiJ19QbIfku/Z5x7BYEvenV5Lc4buZT87YJ64 jjaiFLAPQd9/qGol6Gu9l/dOKB5heXF3Y1XJDdYZOhMfM8lvEdwQbSPJs866xutJ+EG/ muJtfifXiVBU95z0B3N3J4+3P8GHIMNQUPp/mVw9ltVIIqWMWbY79BqIaTfbVFnTsrj3 9muA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc; bh=4Xzmly2VXzYLFnlkqo9YsSvrz1tmikNREb7p3AF7Jgs=; b=8O8ux7lvSaoUM9+pWkgw+88OYEWSKTl1HxuYN/aYIdpus3XCcgIN8lIjm+UJdYOAh9 jFK9fBlApqtMV98FtTkdeBpO5ivC9MfxD3G2viMaM4l6cOrD6FYKHhxUrQRZ3p7+SpXb 6k7fyVIz+l44qPsdEbQR0jRzzZyMfD5rQljb5wyK99Ac/3LYZ+aUvxpzCgXnH3imSpU0 xmn5i8aAvjhQKTJTKTHd5KWQNH0HQ1S1cpe/kGG9g/2Ly9drOUoS1tGTzQsIlks+PNDa QNJ7W3lwILjO94wMEb4649PGtgOqAP9zfMUdmH98v5ayI8H3pjVi/WA0ocp5Z2Gv/FJG qOmA== X-Gm-Message-State: ACgBeo1ivkYRpbjVex6IpX3bxkSHz/3s9Qp2niJyx7ptcj25gTyGRfQd PMy3E5sby1YB1FckFfzKSzOkkg== X-Received: by 2002:a5d:588d:0:b0:225:9818:668d with SMTP id n13-20020a5d588d000000b002259818668dmr8714366wrf.100.1661866429233; Tue, 30 Aug 2022 06:33:49 -0700 (PDT) Received: from [192.168.178.32] ([51.155.200.13]) by smtp.gmail.com with ESMTPSA id n1-20020a05600c4f8100b003a5c064717csm13752196wmq.22.2022.08.30.06.33.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Aug 2022 06:33:48 -0700 (PDT) Message-ID: <016bdefd-ff75-35ca-52a5-0e058e0a5d04@isovalent.com> Date: Tue, 30 Aug 2022 14:33:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH bpf-next v1] bpftool: Add support for querying cgroup_iter link Content-Language: en-GB To: Hao Luo , linux-kernel@vger.kernel.org, bpf@vger.kernel.org Cc: Alexei Starovoitov , Andrii Nakryiko , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , KP Singh , John Fastabend , Stanislav Fomichev , Jiri Olsa , Yosry Ahmed References: <20220829231828.1016835-1-haoluo@google.com> From: Quentin Monnet In-Reply-To: <20220829231828.1016835-1-haoluo@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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