newer kernel+systemtap & nfs.fop.open
Daire Byrne
daire@dneg.com
Mon Apr 4 12:28:23 GMT 2022
Okay, it looks like William Cohen's patches do indeed fix the issue -
the fullpath is now being reported.
I hadn't noticed those updates since I originally posted.
Much obliged,
Daire
On Mon, 4 Apr 2022 at 12:21, Daire Byrne <daire@dneg.com> wrote:
>
> Serhei/David,
>
> Thanks for the suggestions and explanation. I get the same result with
> "fullpath_struct_file(task_current(), $filp)" using the v5.16 kernel
> and systemtap 4.7pre.
>
> As Serhei said, it seems like the mnt_parent is completely missing.
>
> But then I realised I had completely forgotten that I manually patched
> systemtap according to this just so I could get my script to compile
> at all:
>
> https://sourceware.org/bugzilla/show_bug.cgi?id=26184#c5
>
> And now it also looks like a recent commit has been made to fix that
> particular issue so I'll try to pull the latest systemtap and try
> again.
>
> https://sourceware.org/git/?p=systemtap.git;a=commit;h=3739d47c4cc427ce4818d884f429a3efa85c38ae
>
> Daire
>
>
> On Fri, 1 Apr 2022 at 21:13, Serhei Makarov <me@serhei.io> wrote:
> >
> >
> >
> > On Fri, Apr 1, 2022, at 10:55 AM, Serhei Makarov wrote:
> > > In this case the last commit
> > > to tapsets/linux/dentry.stp was in 2020
> > > so it looks like we may have some catching up to the kernel
> > > to do. I'll investigate more (i.e. delve into kernel git history)
> > > and get back to you.
> > I'm got a 'read fault' running your example on Fedora 5.15.4-201.fc35.x86_64,
> > which indicates even further divergence later on.
> > Which kernel version were you running the example on?
> >
> > Looks like "struct mount" no longer defines the "mnt_parent" member
> > used by task_dentry_path() tapset function in /usr/share/systemtap/tapset/linux/dentry.stp
> > which is strange as the upstream Linux kernel code still uses that member
> > in the equivalent fs/d_path.c __prepend_path code.
> >
> > sutap -ve 'probe begin { if (@type_member_defined("mount", mnt_parent)) { print("foo") } else { print("bar") } exit() }'
> >
> > Very strange, as even checking the debugsource doesn't show any downstream changes
> > as found by
> >
> > $ debuginfod-find source /boot/vmlinuz-5.15.4-201.fc35.x86_64 /usr/src/debug/kernel-5.15.4/linux-5.15.4-201.fc35.x86_64/fs/d_path.c
> >
> > I'm also confused and will continue investigating until I become unconfused.
More information about the Systemtap
mailing list