* [PATCH] perf test probe_vfs_getname: Correct probe line for updated kernel code
@ 2025-05-16 9:05 Leo Yan
2025-05-16 18:49 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 3+ messages in thread
From: Leo Yan @ 2025-05-16 9:05 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Namhyung Kim, Jiri Olsa, Ian Rogers,
Adrian Hunter, Liang, Kan, Jakub Brnak, Athira Rajeev,
linux-perf-users, linux-kernel
Cc: Leo Yan
Since commit 611851010c74 ("fs: dedup handling of struct filename init
and refcounts bumps"), the kernel has been refactored to use a new
inline function initname(), moving name initialization into it.
As a result, the perf probe test can no longer find the source line that
matches the defined regular expressions. This causes the script to fail
when attempting to add probes.
Update the regular expression to search for the call site of initname().
This provides a valid source line number for adding the probe.
Fixes: 611851010c74 ("fs: dedup handling of struct filename init and refcounts bumps")
Signed-off-by: Leo Yan <leo.yan@arm.com>
---
tools/perf/tests/shell/lib/probe_vfs_getname.sh | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
index 89f72a4c818c..cbfdd2a62c6e 100644
--- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
@@ -13,12 +13,8 @@ cleanup_probe_vfs_getname() {
add_probe_vfs_getname() {
add_probe_verbose=$1
if [ $had_vfs_getname -eq 1 ] ; then
- result_filename_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*"
- line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_filename_re" | sed -r "s/$result_filename_re/\1/")
- if [ -z "$line" ] ; then
- result_aname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->aname = NULL;"
- line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_aname_re" | sed -r "s/$result_aname_re/\1/")
- fi
+ result_initname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+initname.*"
+ line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_initname_re" | sed -r "s/$result_initname_re/\1/")
if [ -z "$line" ] ; then
echo "Could not find probeable line"
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] perf test probe_vfs_getname: Correct probe line for updated kernel code
2025-05-16 9:05 [PATCH] perf test probe_vfs_getname: Correct probe line for updated kernel code Leo Yan
@ 2025-05-16 18:49 ` Arnaldo Carvalho de Melo
2025-05-19 8:35 ` Leo Yan
0 siblings, 1 reply; 3+ messages in thread
From: Arnaldo Carvalho de Melo @ 2025-05-16 18:49 UTC (permalink / raw)
To: Leo Yan
Cc: Namhyung Kim, Jiri Olsa, Ian Rogers, Adrian Hunter, Liang, Kan,
Jakub Brnak, Athira Rajeev, linux-perf-users, linux-kernel
On Fri, May 16, 2025 at 10:05:32AM +0100, Leo Yan wrote:
> Since commit 611851010c74 ("fs: dedup handling of struct filename init
> and refcounts bumps"), the kernel has been refactored to use a new
> inline function initname(), moving name initialization into it.
>
> As a result, the perf probe test can no longer find the source line that
> matches the defined regular expressions. This causes the script to fail
> when attempting to add probes.
>
> Update the regular expression to search for the call site of initname().
Well, I'd say we should add, not update, i.e. a new perf should continue
to work on an older kernel, so please consider the following patch.
- Arnaldo
diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
index 89f72a4c818c712b..aa867e28eadc46bc 100644
--- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
+++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
@@ -13,8 +13,17 @@ cleanup_probe_vfs_getname() {
add_probe_vfs_getname() {
add_probe_verbose=$1
if [ $had_vfs_getname -eq 1 ] ; then
- result_filename_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*"
- line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_filename_re" | sed -r "s/$result_filename_re/\1/")
+ # Please keep the older regexps so that this will pass on older kernels as well
+ # as in the most recent one.
+
+ result_initname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+initname.*"
+ line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_initname_re" | sed -r "s/$result_initname_re/\1/")
+
+ if [ -z "$line" ] ; then
+ result_filename_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*"
+ line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_filename_re" | sed -r "s/$result_filename_re/\1/")
+ fi
+
if [ -z "$line" ] ; then
result_aname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->aname = NULL;"
line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_aname_re" | sed -r "s/$result_aname_re/\1/")
> This provides a valid source line number for adding the probe.
>
> Fixes: 611851010c74 ("fs: dedup handling of struct filename init and refcounts bumps")
> Signed-off-by: Leo Yan <leo.yan@arm.com>
> ---
> tools/perf/tests/shell/lib/probe_vfs_getname.sh | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> index 89f72a4c818c..cbfdd2a62c6e 100644
> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> @@ -13,12 +13,8 @@ cleanup_probe_vfs_getname() {
> add_probe_vfs_getname() {
> add_probe_verbose=$1
> if [ $had_vfs_getname -eq 1 ] ; then
> - result_filename_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*"
> - line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_filename_re" | sed -r "s/$result_filename_re/\1/")
> - if [ -z "$line" ] ; then
> - result_aname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->aname = NULL;"
> - line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_aname_re" | sed -r "s/$result_aname_re/\1/")
> - fi
> + result_initname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+initname.*"
> + line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_initname_re" | sed -r "s/$result_initname_re/\1/")
>
> if [ -z "$line" ] ; then
> echo "Could not find probeable line"
> --
> 2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] perf test probe_vfs_getname: Correct probe line for updated kernel code
2025-05-16 18:49 ` Arnaldo Carvalho de Melo
@ 2025-05-19 8:35 ` Leo Yan
0 siblings, 0 replies; 3+ messages in thread
From: Leo Yan @ 2025-05-19 8:35 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Namhyung Kim, Jiri Olsa, Ian Rogers, Adrian Hunter, Liang, Kan,
Jakub Brnak, Athira Rajeev, linux-perf-users, linux-kernel
On Fri, May 16, 2025 at 03:49:51PM -0300, Arnaldo Carvalho de Melo wrote:
> On Fri, May 16, 2025 at 10:05:32AM +0100, Leo Yan wrote:
[...]
> Well, I'd say we should add, not update, i.e. a new perf should continue
> to work on an older kernel, so please consider the following patch.
The change is fine with me. I sent patch v2 based on the idea.
Thanks a lot for suggestion!
Leo
> - Arnaldo
>
> diff --git a/tools/perf/tests/shell/lib/probe_vfs_getname.sh b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> index 89f72a4c818c712b..aa867e28eadc46bc 100644
> --- a/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> +++ b/tools/perf/tests/shell/lib/probe_vfs_getname.sh
> @@ -13,8 +13,17 @@ cleanup_probe_vfs_getname() {
> add_probe_vfs_getname() {
> add_probe_verbose=$1
> if [ $had_vfs_getname -eq 1 ] ; then
> - result_filename_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*"
> - line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_filename_re" | sed -r "s/$result_filename_re/\1/")
> + # Please keep the older regexps so that this will pass on older kernels as well
> + # as in the most recent one.
> +
> + result_initname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+initname.*"
> + line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_initname_re" | sed -r "s/$result_initname_re/\1/")
> +
> + if [ -z "$line" ] ; then
> + result_filename_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*"
> + line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_filename_re" | sed -r "s/$result_filename_re/\1/")
> + fi
> +
> if [ -z "$line" ] ; then
> result_aname_re="[[:space:]]+([[:digit:]]+)[[:space:]]+result->aname = NULL;"
> line=$(perf probe -L getname_flags 2>&1 | grep -E "$result_aname_re" | sed -r "s/$result_aname_re/\1/")
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-05-19 8:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-16 9:05 [PATCH] perf test probe_vfs_getname: Correct probe line for updated kernel code Leo Yan
2025-05-16 18:49 ` Arnaldo Carvalho de Melo
2025-05-19 8:35 ` Leo Yan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).