Skip to contentSkip to conversation

perf test fix check open filename arg using perf trace on s390x

PATCH In review Thomas Richter 3 participants 10 messages Nov 14, 2017 – Nov 29, 2017 perf events

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 perf test fix check open filename arg using perf trace on s390x

This perf test case fails on s390x. The touch command on s390x uses the openat system call to open the file named on the command line:

[root@s35lp76 perf]# ./perf probe -l
probe:vfs_getname (on getname_flags:72@fs/namei.c with pathname)
[root@s35lp76 perf]# ./perf trace -e open touch /tmp/abc
0.400 ( 0.015 ms): touch/27542 open(filename:
/usr/lib/locale/locale-archive, flags: CLOEXEC ) = 3
[root@s35lp76 perf]#

There is no open system call for file /tmp/abc. Instead openat system call is used:

[root@s35lp76 perf]# strace touch /tmp/abc

    execve("/usr/bin/touch", ["touch", "/tmp/abc"], 0x3ffd547ec98
			/* 30 vars */) = 0
    [...]
    openat(AT_FDCWD, "/tmp/abc", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
    [...]

On s390x the egrep command does not find a matching pattern and returns an error.

Fix this for the s390x platform and create a platform dependend command line to enable the perf probe to listen to openat system call on s390x and get the correct perf trace output.

---
 tools/perf/tests/shell/trace+probe_vfs_getname.sh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
tools/perf/tests/shell/trace+probe_vfs_getname.sh +4 -2
index 2e68c5f120da..2a9ef080efd0 100755
@@ -17,8 +17,10 @@ skip_if_no_perf_probe || exit 2
 file=$(mktemp /tmp/temporary_file.XXXXX)
 
 trace_open_vfs_getname() {
-	perf trace -e open touch $file 2>&1 | \
-	egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ open\(filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
+	test "$(uname -m)" = s390x && { svc="openat"; txt="dfd: +CWD, +"; }
+
+	perf trace -e ${svc:-open} touch $file 2>&1 | \
+	egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ ${svc:-open}\(${txt}filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
 }
 
 
Signature · 1 line
2.13.4
#1 lore raw

PATCH 1/1 perf test: fix test case probe libc's inet_pton on s390x

Perf test case probe libc's inet_pton & backtrace it with ping fails on s390x. The reason is the 'realpath /lib64/ld*.so.* | uniq' line which returns 2 libraries:

        root@s35lp76 shell]# realpath /lib64/ld*.so.* | uniq
        /usr/lib64/ld-2.26.so
        /usr/lib64/ld_pre_smc.so.1.0.1
        [root@s35lp76 shell]

This output makes the perf probe command lines invalid.

Use tool ldd to find out the libraries required by the bash and check if symbol inet_pton is part of the libc library. Some distros do not have a /lib64 directory.

I have also added a check for the existence of an IPv6 network interface before it is being used.

---
 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +5 -2
index 7a84d73324e3..b9c913f1a360 100755
@@ -10,8 +10,8 @@
 
 . $(dirname $0)/lib/probe.sh
 
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(ldd $(which bash) 2>/dev/null | fgrep libc | awk '{ print $3 }')
+nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
 
 trace_libc_inet_pton_backtrace() {
 	idx=0
@@ -37,6 +37,9 @@ trace_libc_inet_pton_backtrace() {
 	done
 }
 
+# Check for IPv6 interface existence
+ip a sh lo | fgrep -q inet6 || exit 2
+
 skip_if_no_perf_probe && \
 perf probe -q $libc inet_pton && \
 trace_libc_inet_pton_backtrace
Signature · 1 line
2.13.4
#2 lore raw

Re: [PATCH] perf test: fix test case probe libc's inet_pton on s390x

Em Tue, Nov 14, 2017 at 08:18:47AM +0100, Thomas Richter escreveu:

Quoted 41 lines

Perf test case probe libc's inet_pton & backtrace it with ping fails on s390x. The reason is the 'realpath /lib64/ld*.so.* | uniq' line which returns 2 libraries:

        root@s35lp76 shell]# realpath /lib64/ld*.so.* | uniq
        /usr/lib64/ld-2.26.so
        /usr/lib64/ld_pre_smc.so.1.0.1
        [root@s35lp76 shell]

This output makes the perf probe command lines invalid.

Use tool ldd to find out the libraries required by the bash and check if symbol inet_pton is part of the libc library. Some distros do not have a /lib64 directory.

I have also added a check for the existence of an IPv6 network interface before it is being used.

---
 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +2 -2
index 7a84d73324e3..b9c913f1a360 100755
@@ -10,8 +10,8 @@
 
 . $(dirname $0)/lib/probe.sh
 
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(ldd $(which bash) 2>/dev/null | fgrep libc | awk '{ print $3 }')
+nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
 
 trace_libc_inet_pton_backtrace() {
 	idx=0

tools/perf/tests/shell/trace+probe_libc_inet_pton.sh trace_libc_inet_pton_backtrace() { · line 45

Quoted 9 lines
tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +3 -0
@@ -37,6 +37,9 @@ trace_libc_inet_pton_backtrace() {
 	done
 }
 
+# Check for IPv6 interface existence
+ip a sh lo | fgrep -q inet6 || exit 2
+
 skip_if_no_perf_probe && \
 perf probe -q $libc inet_pton && \
 trace_libc_inet_pton_backtrace

Humm, this one is failing:

[root@jouet linux]# ls -ila /usr/lib64/libc-2.25.so
3151772 -rwxr-xr-x. 2 root root 2163016 Aug 28 11:48 /usr/lib64/libc-2.25.so [root@jouet linux]# ls -ila /lib64/libc-2.25.so
3151772 -rwxr-xr-x. 2 root root 2163016 Aug 28 11:48 /lib64/libc-2.25.so [root@jouet linux]#

[root@jouet linux]# tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.068 ms
--- ::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.068/0.068/0.068/0.000 ms
0.000 probe_libc:inet_pton:(7fa97fac3d80))
__GI___inet_pton (/usr/lib64/libc-2.25.so)
FAIL: expected backtrace entry 6 ".*inet_pton[[:space:]]\(/lib64/libc.so.6\)$" got "__GI___inet_pton (/usr/lib64/libc-2.25.so)" [root@jouet linux]#

[root@jouet linux]# ldd which ping6 | grep 'libc\>'

	libc.so.6 => /lib64/libc.so.6 (0x00007f883df4f000)

[root@jouet linux]#

[root@jouet linux]# ps | grep bash
3112 pts/3 00:00:00 bash
[root@jouet linux]# ldd which bash | grep 'libc\>'

	libc.so.6 => /lib64/libc.so.6 (0x00007fdd0a17f000)
[root@jouet linux]# grep -w libc /proc/3112/maps 
7f0d017ee000-7f0d019b5000 r-xp 00000000 fd:00 3151772  /usr/lib64/libc-2.25.so
7f0d019b5000-7f0d01bb5000 ---p 001c7000 fd:00 3151772  /usr/lib64/libc-2.25.so
7f0d01bb5000-7f0d01bb9000 r--p 001c7000 fd:00 3151772  /usr/lib64/libc-2.25.so
7f0d01bb9000-7f0d01bbb000 rw-p 001cb000 fd:00 3151772  /usr/lib64/libc-2.25.so

[root@jouet linux]#

/me scratches head

Different name, same contents, need to look at the inode... ;-\

- Arnaldo

#3 lore raw

Re: [PATCH] perf test: fix test case probe libc's inet_pton on s390x

Em Tue, Nov 14, 2017 at 10:26:25AM -0300, Arnaldo Carvalho de Melo escreveu:

Quoted 37 lines

Em Tue, Nov 14, 2017 at 08:18:47AM +0100, Thomas Richter escreveu:

Review

Quoted 3 lines
(quoted diff) +1 -2
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(ldd $(which bash) 2>/dev/null | fgrep libc | awk '{ print $3 }')

Humm, this one is failing:

[root@jouet linux]# ls -ila /usr/lib64/libc-2.25.so
3151772 -rwxr-xr-x. 2 root root 2163016 Aug 28 11:48 /usr/lib64/libc-2.25.so [root@jouet linux]# ls -ila /lib64/libc-2.25.so
3151772 -rwxr-xr-x. 2 root root 2163016 Aug 28 11:48 /lib64/libc-2.25.so [root@jouet linux]#

[root@jouet linux]# tools/perf/tests/shell/trace+probe_libc_inet_pton.sh
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.068 ms
--- ::1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.068/0.068/0.068/0.000 ms
0.000 probe_libc:inet_pton:(7fa97fac3d80))
__GI___inet_pton (/usr/lib64/libc-2.25.so)
FAIL: expected backtrace entry 6 ".*inet_pton[[:space:]]\(/lib64/libc.so.6\)$" got "__GI___inet_pton (/usr/lib64/libc-2.25.so)" [root@jouet linux]#

[root@jouet linux]# ldd which ping6 | grep 'libc\>'

	libc.so.6 => /lib64/libc.so.6 (0x00007f883df4f000)

[root@jouet linux]#

[root@jouet linux]# ps | grep bash
3112 pts/3 00:00:00 bash
[root@jouet linux]# ldd which bash | grep 'libc\>'

	libc.so.6 => /lib64/libc.so.6 (0x00007fdd0a17f000)
[root@jouet linux]# grep -w libc /proc/3112/maps 
7f0d017ee000-7f0d019b5000 r-xp 00000000 fd:00 3151772  /usr/lib64/libc-2.25.so
7f0d019b5000-7f0d01bb5000 ---p 001c7000 fd:00 3151772  /usr/lib64/libc-2.25.so
7f0d01bb5000-7f0d01bb9000 r--p 001c7000 fd:00 3151772  /usr/lib64/libc-2.25.so
7f0d01bb9000-7f0d01bbb000 rw-p 001cb000 fd:00 3151772  /usr/lib64/libc-2.25.so
Quoted 5 lines

[root@jouet linux]#

/me scratches head

Different name, same contents, need to look at the inode... ;-\

Nah, lets ask the kernel how is it that it sees libc, please test the following, works for me:

tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +5 -2
index 7a84d73324e3..8b3da21a08f1 100755
@@ -10,8 +10,8 @@
 
 . $(dirname $0)/lib/probe.sh
 
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g')
+nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
 
 trace_libc_inet_pton_backtrace() {
 	idx=0
@@ -37,6 +37,9 @@ trace_libc_inet_pton_backtrace() {
 	done
 }
 
+# Check for IPv6 interface existence
+ip a sh lo | fgrep -q inet6 || exit 2
+
 skip_if_no_perf_probe && \
 perf probe -q $libc inet_pton && \
 trace_libc_inet_pton_backtrace
#4 lore raw

Re: [PATCH] perf test: fix test case probe libc's inet_pton on s390x

Em Tue, Nov 14, 2017 at 10:34:09AM -0300, Arnaldo Carvalho de Melo escreveu:

Quoted 4 lines
Quoted 1 line

Different name, same contents, need to look at the inode... ;-\

Nah, lets ask the kernel how is it that it sees libc, please test the following, works for me:

BTW, this is what I sticked on that cset:

Committer changes:

We can't really use ldd for libc, as in some systems, such as x86_64, it has hardlinks and then ldd sees one and the kernel the other, so grep for libc in /proc/self/maps to get the one we'll receive from PERF_RECORD_MMAP.

- Arnaldo

Quoted 25 lines
tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +5 -2
index 7a84d73324e3..8b3da21a08f1 100755
@@ -10,8 +10,8 @@
 
 . $(dirname $0)/lib/probe.sh
 
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g')
+nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
 
 trace_libc_inet_pton_backtrace() {
 	idx=0
@@ -37,6 +37,9 @@ trace_libc_inet_pton_backtrace() {
 	done
 }
 
+# Check for IPv6 interface existence
+ip a sh lo | fgrep -q inet6 || exit 2
+
 skip_if_no_perf_probe && \
 perf probe -q $libc inet_pton && \
 trace_libc_inet_pton_backtrace
#5 lore raw

Re: [PATCH] perf test: fix test case probe libc's inet_pton on s390x

Quoted 5 lines · Arnaldo Carvalho de Melo

Em Tue, Nov 14, 2017 at 10:34:09AM -0300, Arnaldo Carvalho de Melo escreveu:

Quoted 4 lines
Quoted 1 line

Different name, same contents, need to look at the inode... ;-\

Nah, lets ask the kernel how is it that it sees libc, please test the following, works for me:

works for me too.

Quoted 12 lines

BTW, this is what I sticked on that cset:

Committer changes:

We can't really use ldd for libc, as in some systems, such as x86_64, it has hardlinks and then ldd sees one and the kernel the other, so grep for libc in /proc/self/maps to get the one we'll receive from PERF_RECORD_MMAP.

- Arnaldo

Yes I am fine with this changes.
Go ahead.

Signature · 5 lines
Thomas Richter, Dept 3303, IBM LTC Boeblingen Germany
--
Vorsitzende des Aufsichtsrats: Martina Koederitz 
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
#6 lore raw

Re: [PATCH] perf test: fix test case probe libc's inet_pton on s390x

Em Tue, Nov 14, 2017 at 02:55:48PM +0100, Thomas-Mich Richter escreveu:

Quoted 19 lines · Arnaldo Carvalho de Melo
Quoted 5 lines

Em Tue, Nov 14, 2017 at 10:34:09AM -0300, Arnaldo Carvalho de Melo escreveu:

Quoted 4 lines
Quoted 1 line

Different name, same contents, need to look at the inode... ;-\

Nah, lets ask the kernel how is it that it sees libc, please test the following, works for me:

works for me too.

Quoted 10 lines

BTW, this is what I sticked on that cset:

Committer changes:

We can't really use ldd for libc, as in some systems, such as x86_64, it has hardlinks and then ldd sees one and the kernel the other, so grep for libc in /proc/self/maps to get the one we'll receive from PERF_RECORD_MMAP.

Quoted 5 lines
Quoted 2 lines

- Arnaldo

Yes I am fine with this changes.
Go ahead.

Thanks for checking, committed.

- Arnaldo

#7 lore raw

[tip:perf/core] perf test shell: Fix test case probe libc's inet_pton on s390x

In reply to Arnaldo Carvalho de Melo
perf test shell: Fix test case probe libc's inet_pton on s390x
Commit-ID:  0879e5e5f33c8a1eb01281ad920173664e68b266
Gitweb:     https://git.kernel.org/tip/0879e5e5f33c8a1eb01281ad920173664e68b266
Author:     Thomas Richter <[email protected]>
AuthorDate: Tue, 14 Nov 2017 08:18:47 +0100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Thu, 16 Nov 2017 14:50:00 -0300

perf test shell: Fix test case probe libc's inet_pton on s390x

The 'perf test' case "probe libc's inet_pton & backtrace it with ping" fails on s390x. The reason is the 'realpath /lib64/ld*.so.* | uniq' line which returns 2 libraries:

        root@s35lp76 shell]# realpath /lib64/ld*.so.* | uniq
        /usr/lib64/ld-2.26.so
        /usr/lib64/ld_pre_smc.so.1.0.1
        [root@s35lp76 shell]

This output makes the "perf probe" command lines invalid.

Use ldd tool to find out the libraries required by "bash" and check if symbol "inet_pton" is part of the "libc" library. Some distros do not have a /lib64 directory.

I have also added a check for the existence of an IPv6 network interface before it is being used.

Committer changes:

We can't really use ldd for libc, as in some systems, such as x86_64, it has hardlinks and then ldd sees one and the kernel the other, so grep for libc in /proc/self/maps to get the one we'll receive from PERF_RECORD_MMAP.

Thomas checked this change and acked it.

---
 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +5 -2
index 7a84d73..8b3da21 100755
@@ -10,8 +10,8 @@
 
 . $(dirname $0)/lib/probe.sh
 
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g')
+nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
 
 trace_libc_inet_pton_backtrace() {
 	idx=0
@@ -37,6 +37,9 @@ trace_libc_inet_pton_backtrace() {
 	done
 }
 
+# Check for IPv6 interface existence
+ip a sh lo | fgrep -q inet6 || exit 2
+
 skip_if_no_perf_probe && \
 perf probe -q $libc inet_pton && \
 trace_libc_inet_pton_backtrace
#8 lore raw

[tip:perf/core] perf test shell: Fix test case probe libc's inet_pton on s390x

In reply to Arnaldo Carvalho de Melo
perf test shell: Fix test case probe libc's inet_pton on s390x
Commit-ID:  d5c5e46aa7a2b256a526f9ce832ffbf622c3c19a
Gitweb:     https://git.kernel.org/tip/d5c5e46aa7a2b256a526f9ce832ffbf622c3c19a
Author:     Thomas Richter <[email protected]>
AuthorDate: Tue, 14 Nov 2017 08:18:47 +0100
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Tue, 28 Nov 2017 14:23:16 -0300

perf test shell: Fix test case probe libc's inet_pton on s390x

The 'perf test' case "probe libc's inet_pton & backtrace it with ping" fails on s390x. The reason is the 'realpath /lib64/ld*.so.* | uniq' line which returns 2 libraries:

        root@s35lp76 shell]# realpath /lib64/ld*.so.* | uniq
        /usr/lib64/ld-2.26.so
        /usr/lib64/ld_pre_smc.so.1.0.1
        [root@s35lp76 shell]

This output makes the "perf probe" command lines invalid.

Use ldd tool to find out the libraries required by "bash" and check if symbol "inet_pton" is part of the "libc" library. Some distros do not have a /lib64 directory.

I have also added a check for the existence of an IPv6 network interface before it is being used.

Committer changes:

We can't really use ldd for libc, as in some systems, such as x86_64, it has hardlinks and then ldd sees one and the kernel the other, so grep for libc in /proc/self/maps to get the one we'll receive from PERF_RECORD_MMAP.

Thomas checked this change and acked it.

---
 tools/perf/tests/shell/trace+probe_libc_inet_pton.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
tools/perf/tests/shell/trace+probe_libc_inet_pton.sh +5 -2
index 7a84d73..8b3da21 100755
@@ -10,8 +10,8 @@
 
 . $(dirname $0)/lib/probe.sh
 
-ld=$(realpath /lib64/ld*.so.* | uniq)
-libc=$(echo $ld | sed 's/ld/libc/g')
+libc=$(grep -w libc /proc/self/maps | head -1 | sed -r 's/.*[[:space:]](\/.*)/\1/g')
+nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
 
 trace_libc_inet_pton_backtrace() {
 	idx=0
@@ -37,6 +37,9 @@ trace_libc_inet_pton_backtrace() {
 	done
 }
 
+# Check for IPv6 interface existence
+ip a sh lo | fgrep -q inet6 || exit 2
+
 skip_if_no_perf_probe && \
 perf probe -q $libc inet_pton && \
 trace_libc_inet_pton_backtrace
#9 lore raw
In reply to Thomas Richter

Em Tue, Nov 14, 2017 at 08:18:46AM +0100, Thomas Richter escreveu:

Quoted 2 lines

This perf test case fails on s390x. The touch command on s390x uses the openat system call to open the file named on the command line:

Thanks, tested on x86_64 and applied!

- Arnaldo

Quoted 48 lines

[root@s35lp76 perf]# ./perf probe -l
probe:vfs_getname (on getname_flags:72@fs/namei.c with pathname)
[root@s35lp76 perf]# ./perf trace -e open touch /tmp/abc
0.400 ( 0.015 ms): touch/27542 open(filename:
/usr/lib/locale/locale-archive, flags: CLOEXEC ) = 3
[root@s35lp76 perf]#

There is no open system call for file /tmp/abc. Instead openat system call is used:

[root@s35lp76 perf]# strace touch /tmp/abc

    execve("/usr/bin/touch", ["touch", "/tmp/abc"], 0x3ffd547ec98
			/* 30 vars */) = 0
    [...]
    openat(AT_FDCWD, "/tmp/abc", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
    [...]

On s390x the egrep command does not find a matching pattern and returns an error.

Fix this for the s390x platform and create a platform dependend command line to enable the perf probe to listen to openat system call on s390x and get the correct perf trace output.

---
 tools/perf/tests/shell/trace+probe_vfs_getname.sh | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
tools/perf/tests/shell/trace+probe_vfs_getname.sh +4 -2
index 2e68c5f120da..2a9ef080efd0 100755
@@ -17,8 +17,10 @@ skip_if_no_perf_probe || exit 2
 file=$(mktemp /tmp/temporary_file.XXXXX)
 
 trace_open_vfs_getname() {
-	perf trace -e open touch $file 2>&1 | \
-	egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ open\(filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
+	test "$(uname -m)" = s390x && { svc="openat"; txt="dfd: +CWD, +"; }
+
+	perf trace -e ${svc:-open} touch $file 2>&1 | \
+	egrep " +[0-9]+\.[0-9]+ +\( +[0-9]+\.[0-9]+ ms\): +touch\/[0-9]+ ${svc:-open}\(${txt}filename: +${file}, +flags: CREAT\|NOCTTY\|NONBLOCK\|WRONLY, +mode: +IRUGO\|IWUGO\) += +[0-9]+$"
 }
 
 
Signature · 1 line
2.13.4