On Mon, Jan 28, 2019 at 10:30 AM Jakub Kicinski <[email protected]> wrote: > > When prog array is updated with bpftool users often refer > to the map via the ID. Unfortunately, that's likely > to lead to confusion because prog arrays get flushed when > the last user reference is gone. If there is no other > reference bpftool will create one, update successfully > just to close the map again and have it flushed. > > Warn about this case in non-JSON mode. > > If the problem continues causing confusion we can remove > the support for referring to a map by ID for prog array > update completely. For now it seems like the potential > inconvenience to users who know what they're doing outweighs > the benefit. > > Signed-off-by: Jakub Kicinski <[email protected]> > Reviewed-by: Quentin Monnet <[email protected]>
Acked-by: Song Liu <[email protected]> > --- > tools/bpf/bpftool/map.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c > index 8cb0e26907ff..6f33818bb6b6 100644 > --- a/tools/bpf/bpftool/map.c > +++ b/tools/bpf/bpftool/map.c > @@ -426,6 +426,9 @@ static int parse_elem(char **argv, struct bpf_map_info > *info, > p_err("not enough value arguments for map of > progs"); > return -1; > } > + if (is_prefix(*argv, "id")) > + p_info("Warning: updating program array via > MAP_ID, make sure this map is kept open\n" > + " by some process or pinned > otherwise update will be lost"); > > fd = prog_parse_fd(&argc, &argv); > if (fd < 0) > -- > 2.19.2 >
