Hi Alexei,
Thanks for your reply.

On Mon, Oct 24, 2016 at 7:01 PM, Alexei Starovoitov
<alexei.starovoi...@gmail.com> wrote:
> On Mon, Oct 24, 2016 at 2:22 PM, William Tu via iovisor-dev
> <iovisor-dev@lists.iovisor.org> wrote:
>> Hi,
>>
>> Is there an easy way to clear all entries in a BPF hash map?
>>
>> My use case:
>> When my BPF userspace program and kernel BPF is running, I want to
>> dynamically adding a new BPF hash map. IIUC, there is no way to do
>> that. So at beginning when loading the BPF, I pre-allocate a pool of
>> hash maps and always lookup all of them. At certain point, my
>> userspace BPF program wants to invalidate a particular map by clearing
>> all its entries. I pinned all maps as PIN_GLOBAL_NS so I think
>> userspace calling close() then open() won't clear all entries. Is
>> there a better way to do it? If there is a BPF_FUNC_map_delete_all,
>> then it will be great. Thanks!
>
> there is no delete_all, since it would be easily confused as 'atomic' delete.
> There cannot be an atomic delete, so user space have to walk the map
> with get_next and delete all elements.
> Such loop in user space is slightly slower than similar loop
> in kernel would have been, but it demonstrates the point that delete_all is
> not atomic either way. Also if speed of delete all matters it means the
> interaction between user and kernel space are not going to scale anyway
> as size of maps grows, number of events in kernel is increasing and so on.
>
> what do you mean by 'add a new hash map' ?

I want my userspace program to create a new bpf map on-demand, then
the currently loaded BPF kernel program can access this map. I think
it's not possible to do that, right? Now I always provision all the
maps I needed before loading BPF to kernel.

> The was a discussion to add 'map inside the map' concept,
> so that 1st map_lookup returns a pointer to another map which
> can be used in 2nd map operation.
> Will it solve your use case?

In that case, my newly created map can be inserted into an entry in
1st map. And the loaded kernel BPF can lookup 1st map, returns the
newly created map. It could solve my case.
But isn't this 'map inside the map' very difficult for verifier to
verify the map access? Thanks.

Regards,
William
_______________________________________________
iovisor-dev mailing list
iovisor-dev@lists.iovisor.org
https://lists.iovisor.org/mailman/listinfo/iovisor-dev

Reply via email to