[GIT PULL] eventfs: Updates for v6.8

From: Steven Rostedt
Date: Sun Jan 07 2024 - 18:09:40 EST




Linus,

This is only for tracefs/eventfs. It does not contain any of the
tracing subsystem updates. It may also conflict with vfs subsystem as
they had a change in the dentry walk, but that code that conflicts is
deleted by this pull request.

eventfs updates for v6.8:

Note, this has no new features but only restructures the eventfs and
tracefs code to simplify it and depend less on how dentry works.

- Remove "lookup" parameter of create_dir_dentry() and
create_file_dentry(). These functions were called by lookup and the
readdir logic, where readdir needed it to up the ref count of the dentry
but the lookup did not. A "lookup" parameter was passed in to tell it
what to do, but this complicated the code. It is better to just always
up the ref count and require the caller to decrement it, even for
lookup.

- Modify the .iterate_shared callback to not use the dcache_readdir()
logic and just handle what gets displayed by that one function. This
removes the need for eventfs to hijack the file->private_data from the
dcache_readdir() "cursor" pointer, and makes the code a bit more sane.

- Use the root and instance inodes for default ownership. Instead of
walking the dentry tree and updating each dentry gid, use the getattr(),
setattr() and permission() callbacks to set the ownership and
permissions using the root or instance as the default.

- Some other optimizations with the eventfs iterate_shared logic.


Please pull the latest eventfs-v6.8 tree, which can be found at:


git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
eventfs-v6.8

Tag SHA1: b24ec2b23e8b77b46510e215ea34887bfb550453
Head SHA1: 1de94b52d5e8d8b32f0252f14fad1f1edc2e71f1


Steven Rostedt (Google) (7):
eventfs: Remove "lookup" parameter from create_dir/file_dentry()
eventfs: Stop using dcache_readdir() for getdents()
tracefs/eventfs: Use root and instance inodes as default ownership
eventfs: Have eventfs_iterate() stop immediately if ei->is_freed is set
eventfs: Do ctx->pos update for all iterations in eventfs_iterate()
eventfs: Read ei->entries before ei->children in eventfs_iterate()
eventfs: Shortcut eventfs_iterate() by skipping entries already read

----
fs/tracefs/event_inode.c | 341 +++++++++++++++++++++++------------------------
fs/tracefs/inode.c | 198 +++++++++++++++------------
fs/tracefs/internal.h | 3 +
3 files changed, 283 insertions(+), 259 deletions(-)
---------------------------