All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Kicinski <jakub.kicinski@netronome.com>
To: Martin KaFai Lau <kafai@fb.com>
Cc: Okash Khawaja <osk@fb.com>,
	Daniel Borkmann <daniel@iogearbox.net>,
	"Alexei Starovoitov" <ast@kernel.org>, Yonghong Song <yhs@fb.com>,
	Quentin Monnet <quentin.monnet@netronome.com>,
	"David S. Miller" <davem@davemloft.net>, <netdev@vger.kernel.org>,
	<kernel-team@fb.com>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH bpf-next 2/3] bpf: btf: add btf json print functionality
Date: Thu, 21 Jun 2018 16:07:19 -0700	[thread overview]
Message-ID: <20180621160719.2cfb4b58@cakuba.netronome.com> (raw)
In-Reply-To: <20180621225117.dhrkrtmkfbeihbe4@kafai-mbp.dhcp.thefacebook.com>

On Thu, 21 Jun 2018 15:51:17 -0700, Martin KaFai Lau wrote:
> On Thu, Jun 21, 2018 at 02:59:35PM -0700, Jakub Kicinski wrote:
> > On Wed, 20 Jun 2018 13:30:53 -0700, Okash Khawaja wrote:  
> > > $ sudo bpftool map dump -p id 14
> > > [{
> > >         "key": 0
> > >     },{
> > >         "value": {
> > >             "m": 1,
> > >             "n": 2,
> > >             "o": "c",
> > >             "p": [15,16,17,18,15,16,17,18
> > >             ],
> > >             "q": [[25,26,27,28,25,26,27,28
> > >                 ],[35,36,37,38,35,36,37,38
> > >                 ],[45,46,47,48,45,46,47,48
> > >                 ],[55,56,57,58,55,56,57,58
> > >                 ]
> > >             ],
> > >             "r": 1,
> > >             "s": 0x7ffff6f70568,
> > >             "t": {
> > >                 "x": 5,
> > >                 "y": 10
> > >             },
> > >             "u": 100,
> > >             "v": 20,
> > >             "w1": 0x7,
> > >             "w2": 0x3
> > >         }
> > >     }
> > > ]  
> > 
> > I don't think this format is okay, JSON output is an API you shouldn't
> > break.  You can change the non-JSON output whatever way you like, but
> > JSON must remain backwards compatible.
> > 
> > The dump today has object per entry, e.g.:
> > 
> > {
> >         "key":["0x00","0x00","0x00","0x00",
> >         ],
> >         "value": ["0x02","0x00","0x00","0x00","0x00","0x00","0x00","0x00"
> >         ]
> > }
> > 
> > This format must remain, you may only augment it with new fields.  E.g.:
> > 
> > {
> >         "key":["0x00","0x00","0x00","0x00",
> >         ],
> > 	"key_struct":{
> > 		"index":0
> > 	},
> >         "value": ["0x02","0x00","0x00","0x00","0x00","0x00","0x00","0x00"
> >         ],
> > 	"value_struct":{
> > 		"src_ip":2,
> > 		"dst_ip:0
> > 	}
> > }  
> I am not sure how useful to have both "key|value" and "(key|value)_struct"
> while most people would prefer "key_struct"/"value_struct" if it is
> available.

Agreed, it's not that useful, especially with the string-hex debacle :(
It's just about the backwards compat.

> How about introducing a new option, like "-b", to print the
> map with BTF (if available) such that it won't break the existing
> one (-j or -p) while the "-b" output can keep using the "key"
> and "value".
> 
> The existing json can be kept as is.

That was my knee jerk reaction too, but on reflection it doesn't sound
that great.  We expect people with new-enough bpftool to use btf, so it
should be available in the default output, without hiding it behind a
switch.  We could add a switch to hide the old output, but that doesn't
give us back the names...  What about Key and Value or k and v?  Or
key_fields and value_fields?

> > The name XYZ_struct may not be the best, perhaps you can come up with a
> > better one?  
> > 
> > Does that make sense?  Am I missing what you're doing here?
> > 
> > One process note - please make sure you run checkpatch.pl --strict on
> > bpftool patches before posting.
> > 
> > Thanks for working on this!  

  reply	other threads:[~2018-06-21 23:07 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-20 20:30 [PATCH bpf-next 0/3] bpf: btf: json print btf info with bpftool map dump Okash Khawaja
2018-06-20 20:30 ` [PATCH bpf-next 1/3] bpf: btf: export btf types and name by offset from lib Okash Khawaja
2018-06-20 22:40   ` Song Liu
2018-06-20 22:48     ` Okash Khawaja
2018-06-20 23:24       ` Song Liu
2018-06-20 20:30 ` [PATCH bpf-next 2/3] bpf: btf: add btf json print functionality Okash Khawaja
2018-06-20 23:14   ` Song Liu
2018-06-21 10:31     ` Okash Khawaja
2018-06-21 10:42   ` Quentin Monnet
2018-06-22 10:24     ` Okash Khawaja
2018-06-22 10:39       ` Quentin Monnet
2018-06-22 18:44         ` Jakub Kicinski
2018-06-21 21:59   ` Jakub Kicinski
2018-06-21 22:51     ` Martin KaFai Lau
2018-06-21 23:07       ` Jakub Kicinski [this message]
2018-06-21 23:58         ` Martin KaFai Lau
2018-06-22  0:25           ` Jakub Kicinski
2018-06-22  1:20             ` Martin KaFai Lau
2018-06-22 11:17               ` Okash Khawaja
2018-06-22 18:43                 ` Jakub Kicinski
2018-06-22 18:40               ` Jakub Kicinski
2018-06-22 20:58                 ` Martin KaFai Lau
2018-06-22 21:27                   ` Jakub Kicinski
2018-06-22 21:49                     ` Jakub Kicinski
2018-06-22 23:19                       ` Martin KaFai Lau
2018-06-22 23:40                         ` Jakub Kicinski
2018-06-22 23:58                           ` Martin KaFai Lau
2018-06-22 22:48                     ` Okash Khawaja
2018-06-22 22:54                     ` Martin KaFai Lau
2018-06-22 23:32                       ` Jakub Kicinski
2018-06-23  0:26                         ` Martin KaFai Lau
2018-06-26 16:48                           ` Okash Khawaja
2018-06-26 20:31                             ` Jakub Kicinski
2018-06-26 22:27                               ` Martin KaFai Lau
2018-06-26 22:35                                 ` Jakub Kicinski
2018-06-27 10:34                                   ` Daniel Borkmann
2018-06-27 11:47                                     ` Okash Khawaja
2018-06-27 12:56                                       ` Daniel Borkmann
2018-07-01 10:31                                         ` Okash Khawaja
2018-07-02 17:19                                           ` Jakub Kicinski
2018-06-20 20:30 ` [PATCH bpf-next 3/3] bpf: btf: json print map dump with btf info Okash Khawaja
2018-06-20 23:22   ` Song Liu
2018-06-21 10:05     ` Okash Khawaja
2018-06-21 10:24   ` Quentin Monnet
2018-06-21 14:26     ` Okash Khawaja

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180621160719.2cfb4b58@cakuba.netronome.com \
    --to=jakub.kicinski@netronome.com \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=kafai@fb.com \
    --cc=kernel-team@fb.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=osk@fb.com \
    --cc=quentin.monnet@netronome.com \
    --cc=yhs@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.