Messages in this thread | | | From | Alexei Starovoitov <> | Date | Sun, 29 Jul 2018 18:51:18 +0300 | Subject | Re: [PATCH v2] Add BPF_SYNCHRONIZE_MAPS bpf(2) command |
| |
On Thu, Jul 26, 2018 at 7:51 PM, Daniel Colascione <dancol@google.com> wrote: > BPF_SYNCHRONIZE_MAPS waits for the release of any references to a BPF > map made by a BPF program that is running at the time the > BPF_SYNCHRONIZE_MAPS command is issued. The purpose of this command is > to provide a means for userspace to replace a BPF map with another, > newer version, then ensure that no component is still using the "old" > map before manipulating the "old" map in some way. > > Signed-off-by: Daniel Colascione <dancol@google.com> > --- > include/uapi/linux/bpf.h | 9 +++++++++ > kernel/bpf/syscall.c | 13 +++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h > index b7db3261c62d..5b27e9117d3e 100644 > --- a/include/uapi/linux/bpf.h > +++ b/include/uapi/linux/bpf.h > @@ -75,6 +75,14 @@ struct bpf_lpm_trie_key { > __u8 data[0]; /* Arbitrary size */ > }; > > +/* BPF_SYNCHRONIZE_MAPS waits for the release of any references to a > + * BPF map made by a BPF program that is running at the time the > + * BPF_SYNCHRONIZE_MAPS command is issued. The purpose of this command
that doesn't sound right to me. such command won't wait for the release of the references. in case of map-in-map the program does not hold the references to inner map (only to outer map).
> + * is to provide a means for userspace to replace a BPF map with > + * another, newer version, then ensure that no component is still > + * using the "old" map before manipulating the "old" map in some way. > + */
that's correct, but the whole paragraph still reads too 'generic' which will lead to confusion, whereas the use case is map-in-map only. I think bpf_sync_inner_map or bpf_sync_map_in_map would be better choices for the name.
btw i don't have reliable internet access at the moment, so pls excuse the delays.
| |