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
>

Reply via email to