]> git.hungrycats.org Git - linux/commitdiff
perf test vfs_getname: Look for alternative line where to collect the pathname
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 27 Aug 2024 18:57:33 +0000 (15:57 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 28 Aug 2024 21:07:20 +0000 (18:07 -0300)
The getname_flags() routine changed recently and thus the place where we
were getting the pathname is not probeable anymore, albeit still
present, so use the next line for that, before:

  root@number:/home/acme/git/perf-tools-next# perf test vfs_getname
   91: Add vfs_getname probe to get syscall args filenames             : FAILED!
   93: Use vfs_getname probe to get syscall args filenames             : FAILED!
  126: Check open filename arg using perf trace + vfs_getname          : FAILED!
  root@number:/home/acme/git/perf-tools-next#

Now tests 91 and 126 are passing, some more investigation is needed for
test 93, that continues to fail.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/tests/shell/lib/probe_vfs_getname.sh

index bf4c1fb71c4b8f126138edb83be3ed064b68d809..b3802d9494b421221dc52724044519b0fc04cf34 100644 (file)
@@ -13,7 +13,12 @@ cleanup_probe_vfs_getname() {
 add_probe_vfs_getname() {
        add_probe_verbose=$1
        if [ $had_vfs_getname -eq 1 ] ; then
-               line=$(perf probe -L getname_flags 2>&1 | grep -E 'result.*=.*filename;' | sed -r 's/[[:space:]]+([[:digit:]]+)[[:space:]]+result->uptr.*/\1/')
+               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
                perf probe -q       "vfs_getname=getname_flags:${line} pathname=result->name:string" || \
                perf probe $add_probe_verbose "vfs_getname=getname_flags:${line} pathname=filename:ustring"
        fi