mirror-linux/fs
Linus Torvalds cb30bf881c tracing updates for v7.1:
- Fix printf format warning for bprintf
 
   sunrpc uses a trace_printk() that triggers a printf warning during the
   compile. Move the __printf() attribute around for when debugging is not
   enabled the warning will go away.
 
 - Remove redundant check for EVENT_FILE_FL_FREED in event_filter_write()
 
   The FREED flag is checked in the call to event_file_file() and then
   checked again right afterward, which is unneeded.
 
 - Clean up event_file_file() and event_file_data() helpers
 
   These helper functions played a different role in the past, but now with
   eventfs, the READ_ONCE() isn't needed. Simplify the code a bit and also
   add a warning to event_file_data() if the file or its data is not present.
 
 - Remove updating file->private_data in tracing open
 
   All access to the file private data is handled by the helper functions,
   which do not use file->private_data. Stop updating it on open.
 
 - Show ENUM names in function arguments via BTF in function tracing
 
   When showing the function arguments when func-args option is set for
   function tracing, if one of the arguments is found to be an enum, show the
   name of the enum instead of its number.
 
 - Add new trace_call__##name() API for tracepoints
 
   Tracepoints are enabled via static_branch() blocks, where when not
   enabled, there's only a nop that is in the code where the execution will
   just skip over it. When tracing is enabled, the nop is converted to a
   direct jump to the tracepoint code. Sometimes more calculations are
   required to be performed to update the parameters of the tracepoint. In
   this case, trace_##name##_enabled() is called which is a static_branch()
   that gets enabled only when the tracepoint is enabled. This allows the
   extra calculations to also be skipped by the nop:
 
   if (trace_foo_enabled()) {
       x = bar();
       trace_foo(x);
   }
 
   Where the x=bar() is only performed when foo is enabled. The problem with
   this approach is that there's now two static_branch() calls. One for
   checking if the tracepoint is enabled, and then again to know if the
   tracepoint should be called. The second one is redundant.
 
   Introduce trace_call__foo() that will call the foo() tracepoint directly
   without doing a static_branch():
 
   if (trace_foo_enabled()) {
       x = bar();
       trace_call__foo();
   }
 
 - Update various locations to use the new trace_call__##name() API
 
 - Move snapshot code out of trace.c
 
   Cleaning up trace.c to not be a "dump all", move the snapshot code out of
   it and into a new trace_snapshot.c file.
 
 - Clean up some "%*.s" to "%*s"
 
 - Allow boot kernel command line options to be called multiple times
 
   Have options like:
 
     ftrace_filter=foo ftrace_filter=bar ftrace_filter=zoo
 
   Equal to:
 
     ftrace_filter=foo,bar,zoo
 
 - Fix ipi_raise event CPU field to be a CPU field
 
   The ipi_raise target_cpus field is defined as a __bitmask(). There is now a
   __cpumask() field definition. Update the field to use that.
 
 - Have hist_field_name() use a snprintf() and not a series of strcat()
 
   It's safer to use snprintf() that a series of strcat().
 
 - Fix tracepoint regfunc balancing
 
   A tracepoint can define a "reg" and "unreg" function that gets called
   before the tracepoint is enabled, and after it is disabled respectively.
   But on error, after the "reg" func is called and the tracepoint is not
   enabled, the "unreg" function is not called to tear down what the "reg"
   function performed.
 
 - Fix output that shows what histograms are enabled
 
   Event variables are displayed incorrectly in the histogram output.
 
   Instead of "sched.sched_wakeup.$var", it is showing
   "$sched.sched_wakeup.var" where the '$' is in the incorrect location.
 
 - Some other simple cleanups.
 -----BEGIN PGP SIGNATURE-----
 
 iIoEABYKADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCaeCpvxQccm9zdGVkdEBn
 b29kbWlzLm9yZwAKCRAp5XQQmuv6qt2WAP44m85BbAjBqJe4WR103eOXV+bREBta
 dRoReKJOMe519gEAp0rK/HoCvHgHhIGe3gaGdIsNhnaxoFyNWMG/wokoLAY=
 =Hg6+
 -----END PGP SIGNATURE-----

Merge tag 'trace-v7.1' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace

Pull tracing updates from Steven Rostedt:

 - Fix printf format warning for bprintf

   sunrpc uses a trace_printk() that triggers a printf warning during
   the compile. Move the __printf() attribute around for when debugging
   is not enabled the warning will go away

 - Remove redundant check for EVENT_FILE_FL_FREED in
   event_filter_write()

   The FREED flag is checked in the call to event_file_file() and then
   checked again right afterward, which is unneeded

 - Clean up event_file_file() and event_file_data() helpers

   These helper functions played a different role in the past, but now
   with eventfs, the READ_ONCE() isn't needed. Simplify the code a bit
   and also add a warning to event_file_data() if the file or its data
   is not present

 - Remove updating file->private_data in tracing open

   All access to the file private data is handled by the helper
   functions, which do not use file->private_data. Stop updating it on
   open

 - Show ENUM names in function arguments via BTF in function tracing

   When showing the function arguments when func-args option is set for
   function tracing, if one of the arguments is found to be an enum,
   show the name of the enum instead of its number

 - Add new trace_call__##name() API for tracepoints

   Tracepoints are enabled via static_branch() blocks, where when not
   enabled, there's only a nop that is in the code where the execution
   will just skip over it. When tracing is enabled, the nop is converted
   to a direct jump to the tracepoint code. Sometimes more calculations
   are required to be performed to update the parameters of the
   tracepoint. In this case, trace_##name##_enabled() is called which is
   a static_branch() that gets enabled only when the tracepoint is
   enabled. This allows the extra calculations to also be skipped by the
   nop:

	if (trace_foo_enabled()) {
		x = bar();
		trace_foo(x);
	}

   Where the x=bar() is only performed when foo is enabled. The problem
   with this approach is that there's now two static_branch() calls. One
   for checking if the tracepoint is enabled, and then again to know if
   the tracepoint should be called. The second one is redundant

   Introduce trace_call__foo() that will call the foo() tracepoint
   directly without doing a static_branch():

	if (trace_foo_enabled()) {
		x = bar();
		trace_call__foo();
	}

 - Update various locations to use the new trace_call__##name() API

 - Move snapshot code out of trace.c

   Cleaning up trace.c to not be a "dump all", move the snapshot code
   out of it and into a new trace_snapshot.c file

 - Clean up some "%*.s" to "%*s"

 - Allow boot kernel command line options to be called multiple times

   Have options like:

	ftrace_filter=foo ftrace_filter=bar ftrace_filter=zoo

   Equal to:

	ftrace_filter=foo,bar,zoo

 - Fix ipi_raise event CPU field to be a CPU field

   The ipi_raise target_cpus field is defined as a __bitmask(). There is
   now a __cpumask() field definition. Update the field to use that

 - Have hist_field_name() use a snprintf() and not a series of strcat()

   It's safer to use snprintf() that a series of strcat()

 - Fix tracepoint regfunc balancing

   A tracepoint can define a "reg" and "unreg" function that gets called
   before the tracepoint is enabled, and after it is disabled
   respectively. But on error, after the "reg" func is called and the
   tracepoint is not enabled, the "unreg" function is not called to tear
   down what the "reg" function performed

 - Fix output that shows what histograms are enabled

   Event variables are displayed incorrectly in the histogram output

   Instead of "sched.sched_wakeup.$var", it is showing
   "$sched.sched_wakeup.var" where the '$' is in the incorrect location

 - Some other simple cleanups

* tag 'trace-v7.1' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace: (24 commits)
  selftests/ftrace: Add test case for fully-qualified variable references
  tracing: Fix fully-qualified variable reference printing in histograms
  tracepoint: balance regfunc() on func_add() failure in tracepoint_add_func()
  tracing: Rebuild full_name on each hist_field_name() call
  tracing: Report ipi_raise target CPUs as cpumask
  tracing: Remove duplicate latency_fsnotify() stub
  tracing: Preserve repeated trace_trigger boot parameters
  tracing: Append repeated boot-time tracing parameters
  tracing: Remove spurious default precision from show_event_trigger/filter formats
  cpufreq: Use trace_call__##name() at guarded tracepoint call sites
  tracing: Remove tracing_alloc_snapshot() when snapshot isn't defined
  tracing: Move snapshot code out of trace.c and into trace_snapshot.c
  mm: damon: Use trace_call__##name() at guarded tracepoint call sites
  btrfs: Use trace_call__##name() at guarded tracepoint call sites
  spi: Use trace_call__##name() at guarded tracepoint call sites
  i2c: Use trace_call__##name() at guarded tracepoint call sites
  kernel: Use trace_call__##name() at guarded tracepoint call sites
  tracepoint: Add trace_call__##name() API
  tracing: trace_mmap.h: fix a kernel-doc warning
  tracing: Pretty-print enum parameters in function arguments
  ...
2026-04-17 09:43:12 -07:00
..
9p treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
adfs vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
affs affs-for-7.1-tag 2026-04-13 16:39:01 -07:00
afs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
autofs vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
befs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
bfs vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
btrfs tracing updates for v7.1: 2026-04-17 09:43:12 -07:00
cachefiles vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
ceph mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
coda treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
configfs Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
cramfs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
crypto fscrypt updates for 7.1 2026-04-13 17:29:12 -07:00
debugfs debugfs: fix placement of EXPORT_SYMBOL_GPL for debugfs_create_str() 2026-04-02 16:15:23 +02:00
devpts Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
dlm ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs 2026-03-29 11:21:22 -07:00
ecryptfs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
efivarfs Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
efs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
erofs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
exfat Description for this pull request: 2026-04-13 16:57:31 -07:00
exportfs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
ext2 \n 2026-04-15 19:22:16 -07:00
ext4 mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
f2fs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
fat vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
freevxfs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
fuse fuse update for 7.1 2026-04-15 19:04:21 -07:00
gfs2 gfs2 changes 2026-04-15 19:12:04 -07:00
hfs vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
hfsplus hfs/hfsplus updates for v7.1 2026-04-13 16:50:38 -07:00
hostfs Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hpfs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
hugetlbfs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
iomap fscrypt updates for 7.1 2026-04-13 17:29:12 -07:00
isofs treewide: fix missed i_ino format specifier conversions 2026-03-06 14:31:30 +01:00
jbd2 vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
jffs2 treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
jfs More robust data integrity checking and some fixes. 2026-04-15 19:29:18 -07:00
kernfs Driver core changes for 7.1-rc1 2026-04-13 19:03:11 -07:00
lockd treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
minix vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
netfs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
nfs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
nfs_common NFSD: Remove NFSERR_EAGAIN 2026-01-02 13:43:41 -05:00
nfsd vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
nilfs2 mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
nls fs/nls: Fix inconsistency between utf8_to_utf32() and utf32_to_utf8() 2025-12-01 11:58:06 +02:00
notify \n 2026-04-15 19:18:51 -07:00
ntfs3 mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
ocfs2 mm.git review status for linus..mm-nonmm-stable 2026-04-16 20:11:56 -07:00
omfs vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
openpromfs
orangefs treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
overlayfs lsm/stable-7.1 PR 20260410 2026-04-13 15:17:28 -07:00
proc mm.git review status for linus..mm-nonmm-stable 2026-04-16 20:11:56 -07:00
pstore mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
qnx4 vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
qnx6 vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
quota quota: Fix race of dquot_scan_active() with quota deactivation 2026-03-25 13:15:36 +01:00
ramfs folio_batch: rename pagevec.h to folio_batch.h 2026-04-05 13:53:07 -07:00
resctrl mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
romfs mm.git review status for linus..mm-stable 2026-02-18 20:50:32 -08:00
smb six smb3 client fixes 2026-04-16 19:14:55 -07:00
squashfs Squashfs: check metadata block offset is within range 2026-02-24 11:13:27 -08:00
sysfs Driver core changes for 7.1-rc1 2026-04-13 19:03:11 -07:00
tests fs/tests: exec: Remove bad test vector 2026-03-18 11:41:53 -07:00
tracefs tracefs updates for 7.1: 2026-04-15 16:27:32 -07:00
ubifs mm.git review status for linus..mm-nonmm-stable 2026-04-16 20:11:56 -07:00
udf \n 2026-04-15 19:22:16 -07:00
ufs vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
unicode Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
vboxsf Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
verity vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
xfs xfs: new code for Linux 7.1 2026-04-13 17:03:48 -07:00
zonefs mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
Kconfig
Kconfig.binfmt
Makefile vfs-7.0-rc1.nullfs 2026-02-09 13:41:34 -08:00
aio.c aio: Stop using i_private_data and i_private_lock 2026-03-26 15:03:30 +01:00
anon_inodes.c anon_inodes: convert to FD_ADD() 2025-11-28 12:42:31 +01:00
attr.c fs: attr: fix comment formatting and spelling issues 2026-04-07 11:26:11 +02:00
backing-file.c lsm: add backing_file LSM hooks 2026-04-03 16:53:50 -04:00
bad_inode.c fs: refactor ->update_time handling 2026-01-12 14:01:32 +01:00
binfmt_elf.c mm: unexport vm_brk_flags() and eliminate vm_flags parameter 2026-04-05 13:53:39 -07:00
binfmt_elf_fdpic.c vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
binfmt_flat.c
binfmt_misc.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
binfmt_script.c
bpf_fs_kfuncs.c bpf: Remove redundant KF_TRUSTED_ARGS flag from all kfuncs 2026-01-02 12:04:28 -08:00
buffer.c mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
char_dev.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
compat_binfmt_elf.c
coredump.c vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
d_path.c dcache: permit dynamic_dname()s up to NAME_MAX 2026-04-07 12:32:22 +02:00
dax.c fs: remove unncessary pagevec.h includes 2026-04-05 13:53:06 -07:00
dcache.c vfs: get rid of BUG_ON() in d_mark_tmpfile_name() 2026-04-14 12:01:12 -05:00
direct-io.c
drop_caches.c
eventfd.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
eventpoll.c vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
exec.c exec: use strnlen() in __set_task_comm 2026-04-01 12:26:07 -07:00
fcntl.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
fhandle.c Convert more 'alloc_obj' cases to default GFP_KERNEL arguments 2026-02-21 20:03:00 -08:00
file.c vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
file_attr.c vfs-7.0-rc2.fixes 2026-02-25 10:34:23 -08:00
file_table.c lsm/stable-7.1 PR 20260410 2026-04-13 15:17:28 -07:00
filesystems.c sysfs(2): fs_index() argument is _not_ a pathname 2026-01-16 12:52:04 -05:00
fs-writeback.c writeback: don't block sync for filesystems with no data integrity guarantees 2026-03-20 14:18:56 +01:00
fs_context.c vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
fs_dirent.c fs: rename fs_types.h to fs_dirent.h 2025-11-05 09:51:30 +01:00
fs_parser.c fs: remove fsparam_path / fs_param_is_path 2026-02-19 14:34:26 +01:00
fs_pin.c
fs_struct.c fs: add <linux/init_task.h> for 'init_fs' 2026-01-14 16:50:37 +01:00
fserror.c treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
fsopen.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
init.c struct filename series 2026-02-09 16:58:28 -08:00
inode.c vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
internal.h lsm/stable-7.1 PR 20260410 2026-04-13 15:17:28 -07:00
ioctl.c
kernel_read_file.c
libfs.c vfs-7.1-rc1.bh.metadata 2026-04-13 12:46:42 -07:00
locks.c treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
mbcache.c vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
mnt_idmapping.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
mount.h fs: add immutable rootfs 2026-01-12 16:52:09 +01:00
mpage.c mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
namei.c vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
namespace.c mount: always duplicate mount 2026-04-14 09:30:15 +02:00
nsfs.c vfs-7.1-rc1.kino 2026-04-13 12:19:01 -07:00
nullfs.c fs: add immutable rootfs 2026-01-12 16:52:09 +01:00
open.c fs: remove do_sys_truncate 2026-03-23 12:41:58 +01:00
pidfs.c vfs-7.1-rc1.pidfs 2026-04-13 13:27:11 -07:00
pipe.c treewide: change inode->i_ino from unsigned long to u64 2026-03-06 14:31:28 +01:00
pnode.c
pnode.h
posix_acl.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
proc_namespace.c
read_write.c fs: add setlease to generic_ro_fops and read-only filesystem directory operations 2026-01-12 10:55:45 +01:00
readdir.c fs: Replace user_access_{begin/end} by scoped user access 2026-03-24 14:44:02 +01:00
remap_range.c
select.c vfs-7.1-rc1.misc 2026-04-13 14:20:11 -07:00
seq_file.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
signalfd.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
splice.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
stack.c
stat.c statx: switch to CLASS(filename_maybe_null) 2026-01-16 12:52:04 -05:00
statfs.c user_statfs(): switch to CLASS(filename) 2026-01-16 12:52:04 -05:00
super.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
sync.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
sysctls.c
timerfd.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
userfaultfd.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
utimes.c do_utimes_path(): switch to CLASS(filename_uflags) 2026-01-16 12:52:03 -05:00
xattr.c xattr: support extended attributes on sockets 2026-03-02 11:06:42 +01:00