From: Kui-Feng Lee <thinker.li@gmail.com>
To: bpf@vger.kernel.org, ast@kernel.org, martin.lau@linux.dev,
song@kernel.org, kernel-team@meta.com, andrii@kernel.org
Cc: sinquersw@gmail.com, kuifeng@meta.com,
Kui-Feng Lee <thinker.li@gmail.com>
Subject: [PATCH bpf-next 0/6] Notify user space when a struct_ops object is detached/unregisterd
Date: Mon, 29 Apr 2024 14:36:03 -0700 [thread overview]
Message-ID: <20240429213609.487820-1-thinker.li@gmail.com> (raw)
The subsystems consuming struct_ops objects may need to detach or
unregister a struct_ops object due to errors or other reasons. It
would be useful to notify user space programs so that error recovery
or logging can be carried out.
We offer a function for the subsystems to remove an object that was
previously registered with them. The BPF struct_ops will detach the
corresponding link if one exists and send an event through
epoll. Additionally, we allow user space programs to disconnect a
struct_ops map from the attached link.
The user space programs could add an entry to an epoll file descriptor
for the link that a struct_ops object has been attached to, and
receive notifications when the object is detached from the link by
user space programs or the subsystem consuming the object.
However, bpf struct_ops maps without BPF_F_LINK are not supported
here. Although, the subsystems still can unregister them through the
function provided here, but the user space program doesn't get
notified since they don't have links.
Kui-Feng Lee (6):
bpf: add a pointer of the attached link to bpf_struct_ops_map.
bpf: export bpf_link_inc_not_zero().
bpf: provide a function to unregister struct_ops objects from
consumers.
bpf: detach a bpf_struct_ops_map from a link.
bpf: support epoll from bpf struct_ops links.
selftests/bpf: test detaching struct_ops links.
include/linux/bpf.h | 9 +
kernel/bpf/bpf_struct_ops.c | 186 +++++++++++++++++-
kernel/bpf/syscall.c | 17 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.c | 18 +-
.../selftests/bpf/bpf_testmod/bpf_testmod.h | 1 +
.../bpf/prog_tests/test_struct_ops_module.c | 104 ++++++++++
.../selftests/bpf/progs/struct_ops_module.c | 7 +
7 files changed, 328 insertions(+), 14 deletions(-)
--
2.34.1
next reply other threads:[~2024-04-29 21:36 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-29 21:36 Kui-Feng Lee [this message]
2024-04-29 21:36 ` [PATCH bpf-next 1/6] bpf: add a pointer of the attached link to bpf_struct_ops_map Kui-Feng Lee
2024-05-01 17:01 ` Andrii Nakryiko
2024-05-01 22:15 ` Kui-Feng Lee
2024-04-29 21:36 ` [PATCH bpf-next 2/6] bpf: export bpf_link_inc_not_zero() Kui-Feng Lee
2024-04-29 21:36 ` [PATCH bpf-next 3/6] bpf: provide a function to unregister struct_ops objects from consumers Kui-Feng Lee
2024-05-01 18:48 ` Martin KaFai Lau
2024-05-01 22:15 ` Kui-Feng Lee
2024-05-01 23:06 ` Martin KaFai Lau
2024-05-02 17:56 ` Martin KaFai Lau
2024-05-02 18:29 ` Martin KaFai Lau
2024-05-03 0:41 ` Kui-Feng Lee
2024-05-03 16:19 ` Alexei Starovoitov
2024-05-03 18:09 ` Kui-Feng Lee
2024-05-03 17:17 ` Martin KaFai Lau
2024-04-29 21:36 ` [PATCH bpf-next 4/6] bpf: detach a bpf_struct_ops_map from a link Kui-Feng Lee
2024-04-29 21:36 ` [PATCH bpf-next 5/6] bpf: support epoll from bpf struct_ops links Kui-Feng Lee
2024-05-01 17:03 ` Andrii Nakryiko
2024-05-01 22:16 ` Kui-Feng Lee
2024-04-29 21:36 ` [PATCH bpf-next 6/6] selftests/bpf: test detaching " Kui-Feng Lee
2024-05-01 17:05 ` Andrii Nakryiko
2024-05-01 22:17 ` Kui-Feng Lee
2024-05-02 18:15 ` Martin KaFai Lau
2024-05-03 18:34 ` Kui-Feng Lee
2024-05-03 19:15 ` Martin KaFai Lau
2024-05-03 21:34 ` Kui-Feng Lee
2024-05-03 21:59 ` Martin KaFai Lau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240429213609.487820-1-thinker.li@gmail.com \
--to=thinker.li@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=kernel-team@meta.com \
--cc=kuifeng@meta.com \
--cc=martin.lau@linux.dev \
--cc=sinquersw@gmail.com \
--cc=song@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).