2024-04-12 14:29:32

by Steven Rostedt

[permalink] [raw]
Subject: [GIT PULL] tracing: Fixes for v6.9


Linus,

Three trivial fixes and one non-trivial one.

Tracing fixes for 6.9:

- Fix the buffer_percent accounting as it is dependent on three variables:
1) pages_read - number of subbuffers read
2) pages_lost - number of subbuffers lost due to overwrite
3) pages_touched - number of pages that a writer entered
These three counters only increment, and to know how many active pages
there are on the buffer at any given time, the pages_read and
pages_lost are subtracted from pages_touched. But the pages touched
was incremented whenever any writer went to the next subbuffer even
if it wasn't the only one, so it was incremented more than it should
be causing the counter for how many subbuffers currently have content
incorrect, which caused the buffer_percent that holds waiters until
the ring buffer is filled to a given percentage to wake up early.

- Fix warning of unused functions when PERF_EVENTS is not configured in

- Replace bad tab with space in Kconfig for FTRACE_RECORD_RECURSION_SIZE

- Fix to some kerneldoc function comments in eventfs code.


Please pull the latest trace-v6.9-rc3 tree, which can be found at:


git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git
trace-v6.9-rc3

Tag SHA1: 184a6ab4ad1cf6e761bdf30b8a944774d1eb776a
Head SHA1: ffe3986fece696cf65e0ef99e74c75f848be8e30


Arnd Bergmann (1):
tracing: hide unused ftrace_event_id_fops

Prasad Pandit (1):
tracing: Fix FTRACE_RECORD_RECURSION_SIZE Kconfig entry

Steven Rostedt (Google) (1):
ring-buffer: Only update pages_touched when a new page is touched

Yang Li (1):
eventfs: Fix kernel-doc comments to functions

----
fs/tracefs/event_inode.c | 14 ++++++++++----
kernel/trace/Kconfig | 2 +-
kernel/trace/ring_buffer.c | 6 +++---
kernel/trace/trace_events.c | 4 ++++
4 files changed, 18 insertions(+), 8 deletions(-)
---------------------------
diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c
index dc067eeb6387..894c6ca1e500 100644
--- a/fs/tracefs/event_inode.c
+++ b/fs/tracefs/event_inode.c
@@ -336,6 +336,7 @@ static void update_inode_attr(struct dentry *dentry, struct inode *inode,

/**
* lookup_file - look up a file in the tracefs filesystem
+ * @parent_ei: Pointer to the eventfs_inode that represents parent of the file
* @dentry: the dentry to look up
* @mode: the permission that the file should have.
* @attr: saved attributes changed by user
@@ -389,6 +390,7 @@ static struct dentry *lookup_file(struct eventfs_inode *parent_ei,
/**
* lookup_dir_entry - look up a dir in the tracefs filesystem
* @dentry: the directory to look up
+ * @pei: Pointer to the parent eventfs_inode if available
* @ei: the eventfs_inode that represents the directory to create
*
* This function will look up a dentry for a directory represented by
@@ -478,16 +480,20 @@ void eventfs_d_release(struct dentry *dentry)

/**
* lookup_file_dentry - create a dentry for a file of an eventfs_inode
+ * @dentry: The parent dentry under which the new file's dentry will be created
* @ei: the eventfs_inode that the file will be created under
* @idx: the index into the entry_attrs[] of the @ei
- * @parent: The parent dentry of the created file.
- * @name: The name of the file to create
* @mode: The mode of the file.
* @data: The data to use to set the inode of the file with on open()
* @fops: The fops of the file to be created.
*
- * Create a dentry for a file of an eventfs_inode @ei and place it into the
- * address located at @e_dentry.
+ * This function creates a dentry for a file associated with an
+ * eventfs_inode @ei. It uses the entry attributes specified by @idx,
+ * if available. The file will have the specified @mode and its inode will be
+ * set up with @data upon open. The file operations will be set to @fops.
+ *
+ * Return: Returns a pointer to the newly created file's dentry or an error
+ * pointer.
*/
static struct dentry *
lookup_file_dentry(struct dentry *dentry,
diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
index 61c541c36596..47345bf1d4a9 100644
--- a/kernel/trace/Kconfig
+++ b/kernel/trace/Kconfig
@@ -965,7 +965,7 @@ config FTRACE_RECORD_RECURSION

config FTRACE_RECORD_RECURSION_SIZE
int "Max number of recursed functions to record"
- default 128
+ default 128
depends on FTRACE_RECORD_RECURSION
help
This defines the limit of number of functions that can be
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 25476ead681b..6511dc3a00da 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1393,7 +1393,6 @@ static void rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
old_write = local_add_return(RB_WRITE_INTCNT, &next_page->write);
old_entries = local_add_return(RB_WRITE_INTCNT, &next_page->entries);

- local_inc(&cpu_buffer->pages_touched);
/*
* Just make sure we have seen our old_write and synchronize
* with any interrupts that come in.
@@ -1430,8 +1429,9 @@ static void rb_tail_page_update(struct ring_buffer_per_cpu *cpu_buffer,
*/
local_set(&next_page->page->commit, 0);

- /* Again, either we update tail_page or an interrupt does */
- (void)cmpxchg(&cpu_buffer->tail_page, tail_page, next_page);
+ /* Either we update tail_page or an interrupt does */
+ if (try_cmpxchg(&cpu_buffer->tail_page, &tail_page, next_page))
+ local_inc(&cpu_buffer->pages_touched);
}
}

diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 7c364b87352e..52f75c36bbca 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -1670,6 +1670,7 @@ static int trace_format_open(struct inode *inode, struct file *file)
return 0;
}

+#ifdef CONFIG_PERF_EVENTS
static ssize_t
event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos)
{
@@ -1684,6 +1685,7 @@ event_id_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos)

return simple_read_from_buffer(ubuf, cnt, ppos, buf, len);
}
+#endif

static ssize_t
event_filter_read(struct file *filp, char __user *ubuf, size_t cnt,
@@ -2152,10 +2154,12 @@ static const struct file_operations ftrace_event_format_fops = {
.release = seq_release,
};

+#ifdef CONFIG_PERF_EVENTS
static const struct file_operations ftrace_event_id_fops = {
.read = event_id_read,
.llseek = default_llseek,
};
+#endif

static const struct file_operations ftrace_event_filter_fops = {
.open = tracing_open_file_tr,


2024-04-12 16:08:01

by Linus Torvalds

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9

On Fri, 12 Apr 2024 at 07:29, Steven Rostedt <[email protected]> wrote:
>
> - Replace bad tab with space in Kconfig for FTRACE_RECORD_RECURSION_SIZE

Argh. What parser is this? We need to fix this craziness.

Yes, yes, we have "tabs and spaces" issues due to the fundamental
brokenness of make, and we can't get rid of *that* bogosity.

But for our own Kconfig files? Whitespace is whitespace (ignoring
crazy unicode extensions), we need to get away from "tabs and spaces
act differently".

Linus

2024-04-12 16:08:50

by pr-tracker-bot

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9

The pull request you sent on Fri, 12 Apr 2024 10:32:04 -0400:

> git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-v6.9-rc3

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/5939d45155bb405ab212ef82992a8695b35f6662

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

2024-04-12 16:23:26

by Linus Torvalds

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9

On Fri, 12 Apr 2024 at 09:15, Steven Rostedt <[email protected]> wrote:
>
> Note, the tab is here:

Yeah, yeah, I checked.

I also checked that the normal "make defconfig" does not care.

In fact, I'm seriously inclined to make sure that our main Kconfig
file has several tabs in several places, just to make damn sure that
any broken sh*t is fixed.

Because no, the fix is *not* to try to fix invisible problems in the
Kconfig files themselves.

I've pulled your thing, but any parsers that think tabs and spaces are
different need to either be fixed, or they need to be shunned.

Linus

2024-04-12 16:27:54

by Steven Rostedt

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9

On Fri, 12 Apr 2024 09:07:18 -0700
Linus Torvalds <[email protected]> wrote:

> On Fri, 12 Apr 2024 at 07:29, Steven Rostedt <[email protected]> wrote:
> >
> > - Replace bad tab with space in Kconfig for FTRACE_RECORD_RECURSION_SIZE
>
> Argh. What parser is this? We need to fix this craziness.
>
> Yes, yes, we have "tabs and spaces" issues due to the fundamental
> brokenness of make, and we can't get rid of *that* bogosity.
>
> But for our own Kconfig files? Whitespace is whitespace (ignoring
> crazy unicode extensions), we need to get away from "tabs and spaces
> act differently".

Note, the tab is here:

- default 128
+ default 128
^

That is, the tab was between "default" and "128".

I'm really agnostic to if we care about it, and was questioning about
taking it or not. But, it looks to be a hidden tab in a weird location,
so I took it.

-- Steve


2024-04-12 16:29:24

by Steven Rostedt

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9

On Fri, 12 Apr 2024 09:21:58 -0700
Linus Torvalds <[email protected]> wrote:

> Ok, that shit will now be broken immediately by me adding tabs to our
> Kconfig file.
>
> Because no, some out-of-tree garbage is not relevant, and if they
> don't fix it out of tree, that's *their* problem, not ours.

Feel free to revert that one commit, I don't really care ;-)

I took it more to be "consistent".

-- Steve

2024-04-12 16:44:00

by Linus Torvalds

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9

On Fri, 12 Apr 2024 at 09:20, Randy Dunlap <[email protected]> wrote:
> >>
> >> Argh. What parser is this? We need to fix this craziness.
>
> something that fedora cares about.
> out-of-tree I expect.

Ok, that shit will now be broken immediately by me adding tabs to our
Kconfig file.

Because no, some out-of-tree garbage is not relevant, and if they
don't fix it out of tree, that's *their* problem, not ours.

Linus

2024-04-12 19:27:02

by Randy Dunlap

[permalink] [raw]
Subject: Re: [GIT PULL] tracing: Fixes for v6.9



On 4/12/24 9:15 AM, Steven Rostedt wrote:
> On Fri, 12 Apr 2024 09:07:18 -0700
> Linus Torvalds <[email protected]> wrote:
>
>> On Fri, 12 Apr 2024 at 07:29, Steven Rostedt <[email protected]> wrote:
>>>
>>> - Replace bad tab with space in Kconfig for FTRACE_RECORD_RECURSION_SIZE
>>
>> Argh. What parser is this? We need to fix this craziness.

something that fedora cares about.
out-of-tree I expect.

>> Yes, yes, we have "tabs and spaces" issues due to the fundamental
>> brokenness of make, and we can't get rid of *that* bogosity.
>>
>> But for our own Kconfig files? Whitespace is whitespace (ignoring
>> crazy unicode extensions), we need to get away from "tabs and spaces
>> act differently".
>
> Note, the tab is here:
>
> - default 128
> + default 128
> ^
>
> That is, the tab was between "default" and "128".
>
> I'm really agnostic to if we care about it, and was questioning about
> taking it or not. But, it looks to be a hidden tab in a weird location,
> so I took it.

Yes, I'm about the same. My comments were:

"""
> Fix FTRACE_RECORD_RECURSION_SIZE entry, replace tab with

replace the tab between "default" and "128" with a space

> a space character. It helps Kconfig parsers to read file
> without error.

Parsers should accept either tab or space but this is a
reasonable change.
"""

Guess I wasn't forceful enough.