[PATCH] filename in tapset nfs.proc.open and nfs.proc.release
David Smith
dsmith@redhat.com
Wed Dec 17 19:46:00 GMT 2014
On 12/17/2014 11:36 AM, Lukas Berk wrote:
> It may be the case where, those looking to use the argstr convenience variable
> simply want to print out all the information being passed, regardless of
> the cost, already. In that case, finding they need to craft another, very
> similar script to get a piece of related information (without knowing why it
> wasn't passed in the first place) could be frustrating. I've always looked
> at argstr (rightly or wrongly) as 'just tell me everything being passed',
> knowing I could write a more tailored script later if needed.
In this case, we're not providing "everything being passed". In
nfs.proc.open, the probe provides:
- server_ip: IP address of server
- prot: transfer protocol
- version: NFS version (the function is used for all NFS version)
- filename: file name
- flag: file flag
- mode: file mode
Only filename, flag, and mode end up in argstr.
(Why was the probe written this way? I don't know, the tapset has been
around a long time.)
If our definition of argstr is "everything (of importance) being
*passed*", then we'd want the filename (which is passed), not the full
path (which isn't passed). The kernel rarely passes around full paths
internally, just a file pointer which contains the file name and a
pointer to the dentry (which points us to the parent directory). Also
note that task_dentry_path() can fail for various reasons, while getting
the file name from the file pointer should succeed most (if not all) of
the time.
--
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)
More information about the Systemtap
mailing list