]> git.ipfire.org Git - thirdparty/linux.git/commit
tracefs: Add d_delete to remove negative dentries
authorSteven Rostedt <rostedt@goodmis.org>
Wed, 11 Jun 2025 16:18:15 +0000 (12:18 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 11 Jun 2025 17:34:30 +0000 (13:34 -0400)
commitd9b13cdad80dc11d74408cf201939a946e9303a6
tree2187756139bf1af8f75460cca4d72c6ac2c04967
parent2fa8bf42c50582c7302918474aae8c52b59e7910
tracefs: Add d_delete to remove negative dentries

If a lookup in tracefs is done on a file that does not exist, it leaves a
dentry hanging around until memory pressure removes it. But eventfs
dentries should hang around as when their ref count goes to zero, it
requires more work to recreate it. For the rest of the tracefs dentries,
they hang around as their dentry is used as a descriptor for the tracing
system. But if a file lookup happens for a file in tracefs that does not
exist, it should be deleted.

Add a .d_delete callback that checks if dentry->fsdata is set or not. Only
eventfs dentries set fsdata so if it has content it should not be deleted
and should hang around in the cache.

Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/tracefs/inode.c