Re: [PATCH 0/5] tracing/user_events: Add auto-del flag for events

From: Alexei Starovoitov
Date: Wed May 31 2023 - 17:44:56 EST

On Tue, May 30, 2023 at 04:52:59PM -0700, Beau Belgrave wrote:
> As part of the discussions for user_events aligning to be used with eBPF
> it became clear [1] we needed a way to delete events without having to rely
> upon the delete IOCTL. Steven suggested that we simply have an owner

This patch set is not addressing the issues I pointed out earlier.
It adds a new flag and new api. It's not a fix.

> for the event, however, the event can be held by more than just the
> first register FD, such as perf/ftrace or additional registers. In order
> to handle all those cases, we must only delete after all references are
> gone from both user and kernel space.
> This series adds a new register flag, USER_EVENT_REG_AUTO_DEL, which
> causes the event to delete itself upon the last put reference. We cannot

Do not introduce a new flag. Make this default.

> fully drop the delete IOCTL, since we still want to enable events to be
> registered early via dynamic_events and persist. If the auto delete flag
> was used during dynamic_events, the event would delete immediately.

You have to delete this broken "delete via ioctl" api.
For persistent events you need a different api in its own name scope,
so it doesn't conflict with per-fd events.

> We have a few key events that we enable immediately after boot and are
> monitored in our environments. Today this is done via dynamic events,
> however, it could also be done directly via the ABI by not passing the
> auto delete flag.
> NOTE: I'll need to merge this work once we take these [2] [3] patches
> into for-next. I'm happy to do so once they land there.
> 1:
> 2:
> 3:
> Beau Belgrave (5):
> tracing/user_events: Store register flags on events
> tracing/user_events: Track refcount consistently via put/get
> tracing/user_events: Add flag to auto-delete events
> tracing/user_events: Add self-test for auto-del flag
> tracing/user_events: Add auto-del flag documentation
> Documentation/trace/user_events.rst | 21 +-
> include/uapi/linux/user_events.h | 10 +-
> kernel/trace/trace_events_user.c | 183 ++++++++++++++----
> .../testing/selftests/user_events/abi_test.c | 115 ++++++++++-
> 4 files changed, 278 insertions(+), 51 deletions(-)
> base-commit: 3862f86c1529fa0016de6344eb974877b4cd3838
> --
> 2.25.1