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]

Reply via email to