Bug 1972798

Summary: unable to find local 'filp', [man error::dwarf] dieoffset 0x1cf974 in nfs, near pc 0x231d5 in nfs_readpages fs/nfs/read.c
Product: Red Hat Enterprise Linux 9 Reporter: Martin Cermak <mcermak>
Component: systemtapAssignee: Frank Ch. Eigler <fche>
systemtap sub component: system-version QA Contact: Martin Cermak <mcermak>
Status: CLOSED ERRATA Docs Contact:
Severity: unspecified    
Priority: unspecified CC: lberk, mcermak, mjw
Version: 9.0Keywords: Bugfix, Triaged
Target Milestone: betaFlags: pm-rhel: mirror+
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: systemtap-4.6-3.el9 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-05-17 13:27:54 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Martin Cermak 2021-06-16 16:11:41 UTC
This is probably just a low prio kernel porting business.  Please, consider fixing:

9.0 Server x86_64 # cat readpages.stp
probe nfs.aop.readpages {
        log(name);
        printf("dev=%d\n", dev);
        printf("ino=%d\n", ino);
        printf("nr_pages=%d\n", nr_pages);
        printf("file=%d\n", file);
        printf("rpages=%d\n", rpages);
        printf("rsize=%d\n", rsize);
        printf("argstr=%s\n", argstr);
        printf("size=%d\n", size);
        printf("units=%s\n", units);
}

probe nfs.aop.readpages.return {
        log(name);
        printf("retstr=%s\n", retstr);
        printf("size=%d\n", size);
        printf("units=%s\n", units);
}
9.0 Server x86_64 #
9.0 Server x86_64 #
9.0 Server x86_64 # stap -P -vp4 readpages.stp
Pass 1: parsed user script and 482 library scripts using 106992virt/87820res/12180shr/75484data kb, in 300usr/100sys/396real ms.
semantic error: unable to find local 'filp', [man error::dwarf] dieoffset 0x1cf974 in nfs, near pc 0x231d5 in nfs_readpages fs/nfs/read.c (alternatives: $file, $ret, $desc, $inode, $mapping)): identifier '$filp' at /usr/share/systemtap/tapset/linux/nfs.stp:982:16
        source:         file = $filp
                               ^

semantic error: unable to find local 'filp', [man error::dwarf] dieoffset 0x1cf974 in nfs, near pc 0x231d5 in nfs_readpages fs/nfs/read.c (alternatives: $file, $ret, $desc, $inode, $mapping)): identifier '$filp' at :982:16
        source:         file = $filp
                               ^

Pass 2: analyzed script: 2 probes, 15 functions, 2 embeds, 0 globals using 294596virt/277656res/14256shr/263088data kb, in 3370usr/470sys/3893real ms.
Pass 2: analysis failed.  [man error::pass2]
9.0 Server x86_64 # 
9.0 Server x86_64 # rpm -q systemtap; uname -r
systemtap-4.5-2.el9.x86_64
5.13.0-0.rc4.33.el9.x86_64
9.0 Server x86_64 #

Comment 1 Martin Cermak 2021-11-29 16:15:10 UTC
Could kernel commit 49dee70052b89498cc0fc61e0e193cefeee40989 substantiate the following potential fix?

$ git diff
diff --git a/tapset/linux/nfs.stp b/tapset/linux/nfs.stp
index 28f0b90ed..232289e3b 100644
--- a/tapset/linux/nfs.stp
+++ b/tapset/linux/nfs.stp
@@ -979,7 +979,7 @@ probe nfs.aop.readpages = kernel.function ("nfs_readpages") !,
         ino = $mapping->host->i_ino
 
         nr_pages = $nr_pages
-        file = $filp
+        file = @choose_defined($filp, $file)
 
         rpages = __nfs_rpages($mapping->host)
         rsize  = __nfs_server_rsize($mapping->host)
$

Comment 2 Frank Ch. Eigler 2021-11-29 16:52:05 UTC
That fix lgtm.

Comment 3 Martin Cermak 2021-12-01 13:07:06 UTC
Commit 2c11a115bdbe41a7f064ccd32b41c76c5b7c516d

Comment 10 errata-xmlrpc 2022-05-17 13:27:54 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new packages: systemtap), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2022:2514