Thread (18 messages) 18 messages, 6 authors, 2021-11-09

Re: [RFC PATCH v3 0/3] Introduce BPF map tracing capability

From: Joe Burton <hidden>
Date: 2021-11-03 17:12:29
Also in: bpf, lkml

That's a good point. Since the probe is invoked before the update takes
place, it would not be possible to account for the possibility that the
update failed.

Unless someone wants the `pre update' hook, I'll simply adjust the
existing hooks' semantics so that they are invoked after the update.
As discussed, this better suits the intended use case.

On Wed, Nov 3, 2021 at 3:34 AM Jamal Hadi Salim [off-list ref] wrote:
On 2021-11-01 22:14, Joe Burton wrote:
quoted
From: Joe Burton<redacted>

This is the third version of a patch series implementing map tracing.

Map tracing enables executing BPF programs upon BPF map updates. This
might be useful to perform upgrades of stateful programs; e.g., tracing
programs can propagate changes to maps that occur during an upgrade
operation.

This version uses trampoline hooks to provide the capability.
fentry/fexit/fmod_ret programs can attach to two new functions:
         int bpf_map_trace_update_elem(struct bpf_map* map, void* key,
                 void* val, u32 flags);
         int bpf_map_trace_delete_elem(struct bpf_map* map, void* key);

These hooks work as intended for the following map types:
         BPF_MAP_TYPE_ARRAY
         BPF_MAP_TYPE_PERCPU_ARRAY
         BPF_MAP_TYPE_HASH
         BPF_MAP_TYPE_PERCPU_HASH
         BPF_MAP_TYPE_LRU_HASH
         BPF_MAP_TYPE_LRU_PERCPU_HASH

The only guarantee about the semantics of these hooks is that they execute
before the operation takes place. We cannot call them with locks held
because the hooked program might try to acquire the same locks. Thus they
may be invoked in situations where the traced map is not ultimately
updated.
Sorry, I may have missed something obvious while staring at the patches,
but:
Dont you want the notification if the command actually was successful
on the map? If the command failed for whatever reason theres nothing
to synchronize? Unless you use that as an indicator to re-read the map?

cheers,
jamal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help