Thread (11 messages) 11 messages, 4 authors, 2020-03-03

Re: [PATCH RFC] Userspace library for handling multiple XDP programs on an interface

From: Toke Høiland-Jørgensen <hidden>
Date: 2020-03-03 16:27:40
Also in: bpf

Alexei Starovoitov [off-list ref] writes:
On Tue, Mar 3, 2020 at 1:50 AM Toke Høiland-Jørgensen [off-list ref] wrote:
quoted
This is the reason why I think the 'link' between the main program and
the replacement program is in the "wrong direction". Instead I want to
introduce a new attachment API that can be used instead of
bpf_raw_tracepoint_open() - something like:

prog_fd = sys_bpf(BPF_PROG_LOAD, ...); // dispatcher
func_fd = sys_bpf(BPF_PROG_LOAD, ...); // replacement func
err = sys_bpf(BPF_PROG_REPLACE_FUNC, prog_fd, btf_id, func_fd); // does *not* return an fd

When using this, the kernel will flip the direction of the reference
between BPF programs, so it goes main_prog -> replacement_prog. And
instead of getting an fd back, this will make the replacement prog share
its lifecycle with the main program, so that when the main program is
released, so is the replacement (absent other references, of course).
There could be an explicit 'release' command as well, of course, and a
way to list all replacements on a program.
Nack to such api.
We hit this opposite direction issue with xdp and tc in the past.
Not going to repeat the same mistake again.
Care to elaborate? What mistake, and what was the issue?

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