Hi,
I have got an implementation of DTrace probes for NFS v3 client. Webrev
of my change is at:
http://cr.opensolaris.org/~danhua/webrev/
The provider and probes are described in attached proposal.
Welcome comments!
Regards,
Danhua
nfsv3client prvoider
Provider
The nfsv3client provider provides probes for tracing NFS version 3 client
activities, mainly sending RPC requests to NFS version 3 server and receiving
RPC replies from NFS version 3 server. These probes are corresponding to the
probes in nfsv3 provider which targets on NFS version 3 server activities.
Arguments
In general, probe arguments are similar with those in nfsv3 provider.
All NFS operation probes have the first argument in common:
args[0] conninfo_t * socket connection information
The conninfo_t structure is already used by the iSCSI target provider (iscsi)
and the NFS v4 provider (nfsv4), and is intended for use by all provider which
are providing some higher level protocol (e.g. iscsi, nfs, http, ftp).
typedef struct conninfo {
ring ci_local; /* local host address */
ring ci_remote; /* remote host address */
ring ci_protocol; /* protocol (ipv4, ipv6, etc) */
} conninfo_t;
Operation probes have their second argument in common:
args[1] nfsv3opinfo_t * NFS v3 operation properties
typedef ruct nfsv3opinfo {
ring noi_curpath; /* current file handle path (if any) */
cred_t *noi_cred; /* credentials */
uint64_t noi_xid; /* transaction ID. It is undefiened in
"nfsv3client:::op-*-request" probes because RPC has not been done when the
request probes fired*/
} nfsv3opinfo_t;
Probes
Below is a list of the probes along with the specific argument for each whose
type is defined by the NFS v3 specification:
probe name args[2]
---------- -------
nfsv3client:::op-access-request ACCESS3args *
nfsv3client:::op-access-reply ACCESS3res *
nfsv3client:::op-commit-request COMMIT3args *
nfsv3client:::op-commit-reply COMMIT3res *
nfsv3client:::op-create-request CREATE3args *
nfsv3client:::op-create-reply CREATE3res *
nfsv3client:::op-fsinfo-request FSINFO3args *
nfsv3client:::op-fsinfo-reply FSINFO3res *
nfsv3client:::op-fsstat-request FSSTAT3args *
nfsv3client:::op-fsstat-reply FSSTAT3res *
nfsv3client:::op-getattr-request GETATTR3args *
nfsv3client:::op-getattr-reply GETATTR3res *
nfsv3client:::op-lookup-request LOOKUP3args *
nfsv3client:::op-lookup-reply LOOKUP3res *
nfsv3client:::op-link-request LINK3args *
nfsv3client:::op-link-reply LINK3res *
nfsv3client:::op-mkdir-request MKDIR3args *
nfsv3client:::op-mkdir-reply MKDIR3res *
nfsv3client:::op-mknod-request MKNOD3args *
nfsv3client:::op-mknod-reply MKNOD3res *
nfsv3client:::op-pathconf-request PATHCONF3args *
nfsv3client:::op-pathconf-reply PATHCONF3res *
nfsv3client:::op-read-request READ3args *
nfsv3client:::op-read-reply READ3res *
nfsv3client:::op-readdir-request READDIR3args *
nfsv3client:::op-readdir-reply READDIR3res *
nfsv3client:::op-readdirplus-request READDIRPLUS3args *
nfsv3client:::op-readdirplus-reply READDIRPLUS3res *
nfsv3client:::op-readlink-request READLINK3args *
nfsv3client:::op-readlink-reply READLINK3res *
nfsv3client:::op-remove-request REMOVE3args *
nfsv3client:::op-remove-reply REMOVE3res *
nfsv3client:::op-rename-request RENAME3args *
nfsv3client:::op-rename-reply RENAME3res *
nfsv3client:::op-rmdir-request RMDIR3args *
nfsv3client:::op-rmdir-reply RMDIR3res *
nfsv3client:::op-setattr-request SETATTR3args *
nfsv3client:::op-setattr-reply SETATTR3res *
nfsv3client:::op-symlink-request SYMLINK3args *
nfsv3client:::op-symlink-reply SYMLINK3res *
nfsv3client:::op-write-request WRITE3args *
nfsv3client:::op-write-reply WRITE3res *
_______________________________________________
dtrace-discuss mailing list
[email protected]