]> sourceware.org Git - systemtap.git/commitdiff
Allow better filtering with IP address and File handle
authorSteve Dickson <steved@redhat.com>
Tue, 23 Feb 2010 16:58:16 +0000 (11:58 -0500)
committerSteve Dickson <steved@redhat.com>
Tue, 16 Mar 2010 15:11:22 +0000 (11:11 -0400)
To allow filtering by the client's IP address,
the addr_from_rqst_str() function was added which
extracts the IP address from incoming procedures
and converts them into a character string. Calls to
addr_from_rqst_str() were added to the top of each
probe so callers of the probes can use the IP addresses
as a filter.

Calls to __svc_fh() were also sprinkled were needed
so callers can also filter on file handles

Signed-off-by: Steve Dickson <steved@redhat.com>
tapset/nfsd.stp
tapset/rpc.stp

index f270d3a09598e774120a313b671d608a18cc0533..823734a6d08d30aff1f47dafbe3fe2359a57a4cc 100644 (file)
@@ -163,7 +163,7 @@ function ftype:string(type:long) %{ /* pure */
 probe nfsd.dispatch = kernel.function("nfsd_dispatch")!,
                       module("nfsd").function("nfsd_dispatch") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = $rqstp->rq_vers
 
@@ -227,9 +227,9 @@ probe nfsd.proc.lookup.return = nfsd.proc2.lookup.return,
 probe nfsd.proc2.lookup = kernel.function("nfsd_proc_lookup") !,
                           module("nfsd").function("nfsd_proc_lookup") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
-        version = 2
+       version = 2
        fh = & @cast($argp, "nfsd_diropargs", "kernel:nfsd")->fh
 
        filelen = $argp->len
@@ -243,6 +243,8 @@ probe nfsd.proc2.lookup = kernel.function("nfsd_proc_lookup") !,
 probe nfsd.proc2.lookup.return = kernel.function("nfsd_proc_lookup").return !,
                           module("nfsd").function("nfsd_proc_lookup").return ?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc2.lookup.return"
        version = 2
        retstr = sprintf("%s", nfsderror($return))
@@ -251,7 +253,7 @@ probe nfsd.proc2.lookup.return = kernel.function("nfsd_proc_lookup").return !,
 probe nfsd.proc3.lookup = kernel.function("nfsd3_proc_lookup") !,
                           module("nfsd").function("nfsd3_proc_lookup") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
         version = 3
        fh = & @cast($argp, "nfsd_diropargs", "kernel:nfsd")->fh
@@ -266,6 +268,8 @@ probe nfsd.proc3.lookup = kernel.function("nfsd3_proc_lookup") !,
 probe nfsd.proc3.lookup.return = kernel.function("nfsd3_proc_lookup").return !,
                           module("nfsd").function("nfsd3_proc_lookup").return ?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.lookup.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -274,7 +278,7 @@ probe nfsd.proc3.lookup.return = kernel.function("nfsd3_proc_lookup").return !,
 probe nfsd.proc4.lookup = kernel.function("nfsd4_lookup") !,
                           module("nfsd").function("nfsd4_lookup") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->current_fh
@@ -289,6 +293,8 @@ probe nfsd.proc4.lookup = kernel.function("nfsd4_lookup") !,
 probe nfsd.proc4.lookup.return = kernel.function("nfsd4_lookup").return !,
                           module("nfsd").function("nfsd4_lookup").return ?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.lookup.return"
        version = 4
        retstr = sprintf("%s", nfsderror($return))
@@ -323,7 +329,7 @@ probe nfsd.proc.read.return = nfsd.proc2.read.return,
 probe nfsd.proc2.read = kernel.function("nfsd_proc_read")!,
                         module("nfsd").function("nfsd_proc_read")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
         version = 2
        fh = & @cast($argp, "nfsd_readargs", "kernel:nfsd")->fh
@@ -348,6 +354,8 @@ probe nfsd.proc2.read = kernel.function("nfsd_proc_read")!,
 probe nfsd.proc2.read.return = kernel.function("nfsd_proc_read").return!,
                         module("nfsd").function("nfsd_proc_read").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc2.read.return"
        version = 2
        retstr = sprintf("%s", nfsderror($return))
@@ -356,7 +364,7 @@ probe nfsd.proc2.read.return = kernel.function("nfsd_proc_read").return!,
 probe nfsd.proc3.read = kernel.function("nfsd3_proc_read")!,
                         module("nfsd").function("nfsd3_proc_read")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 3
        fh = & @cast($argp, "nfsd3_readargs", "kernel:nfsd")->fh
@@ -381,6 +389,8 @@ probe nfsd.proc3.read = kernel.function("nfsd3_proc_read")!,
 probe nfsd.proc3.read.return = kernel.function("nfsd3_proc_read").return!,
                         module("nfsd").function("nfsd3_proc_read").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.read.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -389,7 +399,7 @@ probe nfsd.proc3.read.return = kernel.function("nfsd3_proc_read").return!,
 probe nfsd.proc4.read = kernel.function("nfsd4_read") !,
                           module("nfsd").function("nfsd4_read") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->current_fh
@@ -408,6 +418,8 @@ probe nfsd.proc4.read = kernel.function("nfsd4_read") !,
 probe nfsd.proc4.read.return = kernel.function("nfsd4_read").return!,
                         module("nfsd").function("nfsd4_read").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.read.return"
        version = 4
        retstr = sprintf("%s", nfsderror($return))
@@ -443,7 +455,7 @@ probe nfsd.proc.write.return = nfsd.proc2.write.return,
 probe nfsd.proc2.write = kernel.function("nfsd_proc_write")!,
                         module("nfsd").function("nfsd_proc_write")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
         version = 2
        fh = & @cast($argp, "nfsd_writeargs", "kernel:nfsd")->fh
@@ -468,6 +480,8 @@ probe nfsd.proc2.write = kernel.function("nfsd_proc_write")!,
 probe nfsd.proc2.write.return = kernel.function("nfsd_proc_write").return!,
                         module("nfsd").function("nfsd_proc_write").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc2.write.return"
        version = 2
        retstr = sprintf("%s", nfsderror($return))
@@ -476,7 +490,7 @@ probe nfsd.proc2.write.return = kernel.function("nfsd_proc_write").return!,
 probe nfsd.proc3.write = kernel.function("nfsd3_proc_write")!,
                         module("nfsd").function("nfsd3_proc_write")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
         version = 3
        fh = & @cast($argp, "nfsd3_writeargs", "kernel:nfsd")->fh
@@ -502,6 +516,8 @@ probe nfsd.proc3.write = kernel.function("nfsd3_proc_write")!,
 probe nfsd.proc3.write.return = kernel.function("nfsd3_proc_write").return!,
                         module("nfsd").function("nfsd3_proc_write").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.write.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -512,7 +528,7 @@ probe nfsd.proc3.write.return = kernel.function("nfsd3_proc_write").return!,
 probe nfsd.proc4.write = kernel.function("nfsd4_write") !,
                           module("nfsd").function("nfsd4_write") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->current_fh
@@ -531,6 +547,8 @@ probe nfsd.proc4.write = kernel.function("nfsd4_write") !,
 probe nfsd.proc4.write.return = kernel.function("nfsd4_write").return!,
                         module("nfsd").function("nfsd4_write").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.write.return"
        version = 4
        count = $write->wr_bytes_written
@@ -564,7 +582,7 @@ probe nfsd.proc.commit.return = nfsd.proc3.commit.return
 probe nfsd.proc3.commit = kernel.function("nfsd3_proc_commit")!,
                         module("nfsd").function("nfsd3_proc_commit")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
         version = 3
        fh = & @cast($argp, "struct nfsd3_commitargs", "kernel:nfsd")->fh
@@ -582,6 +600,8 @@ probe nfsd.proc3.commit = kernel.function("nfsd3_proc_commit")!,
 probe nfsd.proc3.commit.return = kernel.function("nfsd3_proc_commit").return!,
                         module("nfsd").function("nfsd3_proc_commit").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.commit.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -590,7 +610,7 @@ probe nfsd.proc3.commit.return = kernel.function("nfsd3_proc_commit").return!,
 probe nfsd.proc4.commit = kernel.function("nfsd4_commit") !,
                           module("nfsd").function("nfsd4_commit") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->current_fh
@@ -607,6 +627,8 @@ probe nfsd.proc4.commit = kernel.function("nfsd4_commit") !,
 probe nfsd.proc4.write.commit = kernel.function("nfsd4_commit").return!,
                         module("nfsd").function("nfsd4_commit").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.commit.return"
        version = 4
        retstr = sprintf("%s", nfsderror($return))
@@ -636,7 +658,7 @@ probe nfsd.proc.create.return = nfsd.proc2.create.return,
 probe nfsd.proc2.create = kernel.function("nfsd_proc_create")!,
                          module("nfsd").function("nfsd_proc_create")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
         version = 2
        fh = & @cast($argp, "struct nfsd_createargs", "kernel:nfsd")->fh
@@ -651,6 +673,8 @@ probe nfsd.proc2.create = kernel.function("nfsd_proc_create")!,
 probe nfsd.proc2.create.return =  kernel.function("nfsd_proc_create").return!,
                                  module("nfsd").function("nfsd_proc_create").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc2.create.return"
        version = 2
        retstr = sprintf("%s", nfsderror($return))
@@ -659,7 +683,7 @@ probe nfsd.proc2.create.return =  kernel.function("nfsd_proc_create").return!,
 probe nfsd.proc3.create = kernel.function("nfsd3_proc_create")!,
                          module("nfsd").function("nfsd3_proc_create")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 3
        fh = & @cast($argp, "struct nfsd_createargs", "kernel:nfsd")->fh
@@ -675,6 +699,8 @@ probe nfsd.proc3.create = kernel.function("nfsd3_proc_create")!,
 probe nfsd.proc3.create.return =  kernel.function("nfsd3_proc_create").return!,
                                  module("nfsd").function("nfsd3_proc_create").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.create.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -683,7 +709,7 @@ probe nfsd.proc3.create.return =  kernel.function("nfsd3_proc_create").return!,
 probe nfsd.proc4.create = kernel.function("nfsd4_create") !,
                           module("nfsd").function("nfsd4_create") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->current_fh
@@ -699,6 +725,8 @@ probe nfsd.proc4.create = kernel.function("nfsd4_create") !,
 probe nfsd.proc4.write.create = kernel.function("nfsd4_create").return!,
                         module("nfsd").function("nfsd4_create").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.create.return"
        version = 4
        retstr = sprintf("%s", nfsderror($return))
@@ -728,9 +756,9 @@ probe nfsd.proc.remove.return = nfsd.proc2.remove.return,
 probe nfsd.proc2.remove = kernel.function("nfsd_proc_remove")!,
                          module("nfsd").function("nfsd_proc_remove")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
-        version = 2
+       version = 2
        fh = & @cast($argp, "struct nfsd_diropargs", "kernel:nfsd")->fh
 
        filelen = $argp->len
@@ -743,6 +771,8 @@ probe nfsd.proc2.remove = kernel.function("nfsd_proc_remove")!,
 probe nfsd.proc2.remove.return =  kernel.function("nfsd_proc_remove").return!,
                                  module("nfsd").function("nfsd_proc_remove").return?
 {
+       client_ip =  addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc2.remove.return"
        version = 2
        retstr = sprintf("%s", nfsderror($return))
@@ -751,7 +781,7 @@ probe nfsd.proc2.remove.return =  kernel.function("nfsd_proc_remove").return!,
 probe nfsd.proc3.remove = kernel.function("nfsd3_proc_remove")!,
                          module("nfsd").function("nfsd3_proc_remove")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 3
        fh = & @cast($argp, "struct nfsd3_diropargs", "kernel:nfsd")->fh
@@ -766,6 +796,8 @@ probe nfsd.proc3.remove = kernel.function("nfsd3_proc_remove")!,
 probe nfsd.proc3.remove.return =  kernel.function("nfsd3_proc_remove").return!,
                                  module("nfsd").function("nfsd3_proc_remove").return?
 {
+       client_ip =  addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.remove.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -774,7 +806,7 @@ probe nfsd.proc3.remove.return =  kernel.function("nfsd3_proc_remove").return!,
 probe nfsd.proc4.remove = kernel.function("nfsd4_remove") !,
                           module("nfsd").function("nfsd4_remove") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->current_fh
@@ -789,6 +821,8 @@ probe nfsd.proc4.remove = kernel.function("nfsd4_remove") !,
 probe nfsd.proc4.remove.return = kernel.function("nfsd4_remove").return!,
                         module("nfsd").function("nfsd4_remove").return?
 {
+       client_ip =  addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.remove.return"
        version = 4
        retstr = sprintf("%s", nfsderror($return))
@@ -798,6 +832,7 @@ probe nfsd.proc4.remove.return = kernel.function("nfsd4_remove").return!,
 *  Fires when clients rename a file on server side
 *
 * Arguments:
+*  client_ip : the ip address of client
 *   fh : file handler of old path
 *   tfh : file handler of new path
 *   filename : old file name 
@@ -818,7 +853,7 @@ probe nfsd.proc.rename.return = nfsd.proc2.rename.return,
 probe nfsd.proc2.rename =  kernel.function("nfsd_proc_rename")!,
                            module("nfsd").function("nfsd_proc_rename")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 2
        fh = & @cast($argp, "struct nfsd_renameargs", "kernel:nfsd")->ffh
@@ -836,6 +871,8 @@ probe nfsd.proc2.rename =  kernel.function("nfsd_proc_rename")!,
 probe nfsd.proc2.rename.return =  kernel.function("nfsd_proc_rename").return!,
                            module("nfsd").function("nfsd_proc_rename").return?
 {
+       client_ip =  addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc2.rename.return"
        version = 2
        retstr = sprintf("%s", nfsderror($return))
@@ -844,7 +881,7 @@ probe nfsd.proc2.rename.return =  kernel.function("nfsd_proc_rename").return!,
 probe nfsd.proc3.rename =  kernel.function("nfsd3_proc_rename")!,
                            module("nfsd").function("nfsd3_proc_rename")?
 {
-       client_ip =  addr_from_rqst($rqstp)
+       client_ip =  addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 3
        fh = & @cast($argp, "struct nfsd3_renameargs", "kernel:nfsd")->ffh
@@ -862,6 +899,8 @@ probe nfsd.proc3.rename =  kernel.function("nfsd3_proc_rename")!,
 probe nfsd.proc3.rename.return =  kernel.function("nfsd3_proc_rename").return!,
                            module("nfsd").function("nfsd3_proc_rename").return?
 {
+       client_ip =  addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc3.rename.return"
        version = 3
        retstr = sprintf("%s", nfsderror($return))
@@ -870,7 +909,7 @@ probe nfsd.proc3.rename.return =  kernel.function("nfsd3_proc_rename").return!,
 probe nfsd.proc4.rename = kernel.function("nfsd4_rename") !,
                           module("nfsd").function("nfsd4_rename") ?
 {
-       client_ip = addr_from_rqst($rqstp)
+       client_ip = addr_from_rqst_str($rqstp)
        proto = $rqstp->rq_prot
        version = 4
        fh = & @cast($cstate, "nfsd4_compound_state", "kernel:nfsd")->save_fh
@@ -888,6 +927,8 @@ probe nfsd.proc4.rename = kernel.function("nfsd4_rename") !,
 probe nfsd.proc4.rename.return = kernel.function("nfsd4_rename").return!,
                         module("nfsd").function("nfsd4_rename").return?
 {
+       client_ip =  addr_from_rqst_str($rqstp)
+
        name = "nfsd.proc4.rename.return"
        version = 4
        retstr = sprintf("%s", nfsderror($return))
@@ -919,6 +960,7 @@ probe nfsd.return = nfsd.open.return,
 *  Fires when server opens a file
 *
 * Arguments:
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  access : indicates the type of open(read/write/commit/readdir...) 
 *  type : type of file(regular file or dir)
@@ -926,6 +968,7 @@ probe nfsd.return = nfsd.open.return,
 probe nfsd.open = kernel.function("nfsd_open") !,
                   module("nfsd").function("nfsd_open")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        access = $access
@@ -938,6 +981,7 @@ probe nfsd.open = kernel.function("nfsd_open") !,
 probe nfsd.open.return = kernel.function("nfsd_open").return !,
                   module("nfsd").function("nfsd_open").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        name = "nfsd.open.return"
@@ -966,6 +1010,7 @@ probe nfsd.close.return = kernel.function("nfsd_close").return!,
 *  Fires when server reads data from a file
 *
 * Arguments:
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  file : argument file,indicates if the file has been opened.
 *  size:
@@ -978,6 +1023,7 @@ probe nfsd.close.return = kernel.function("nfsd_close").return!,
 probe nfsd.read = kernel.function("nfsd_read") !,
                   module("nfsd").function("nfsd_read")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
 %( kernel_v >= "2.6.12" %?
@@ -998,6 +1044,7 @@ probe nfsd.read = kernel.function("nfsd_read") !,
 probe nfsd.read.return = kernel.function("nfsd_read").return !,
                   module("nfsd").function("nfsd_read").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        name = "nfsd.read.return"
@@ -1008,6 +1055,7 @@ probe nfsd.read.return = kernel.function("nfsd_read").return !,
 *  Fires when server writes data to a file
 *
 * Arguments:
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  file : argument file,indicates if the file has been opened.
 *  size:
@@ -1020,6 +1068,7 @@ probe nfsd.read.return = kernel.function("nfsd_read").return !,
 probe nfsd.write = kernel.function("nfsd_write")!,
                    module("nfsd").function("nfsd_write")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
 %( kernel_v >= "2.6.12" %?
@@ -1040,6 +1089,7 @@ probe nfsd.write = kernel.function("nfsd_write")!,
 probe nfsd.write.return = kernel.function("nfsd_write").return!,
                    module("nfsd").function("nfsd_write").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        name = "nfsd.write.return"
@@ -1050,6 +1100,7 @@ probe nfsd.write.return = kernel.function("nfsd_write").return!,
 *  Fires when server commits all pending writes to stable storage.  
 *
 * Arguments:
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  flag : indicates whether this execution is a sync operation
 *  size:
@@ -1059,6 +1110,7 @@ probe nfsd.write.return = kernel.function("nfsd_write").return!,
 probe nfsd.commit = kernel.function("nfsd_commit")!,
                     module("nfsd").function("nfsd_commit")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        count = $count
@@ -1075,6 +1127,7 @@ probe nfsd.commit = kernel.function("nfsd_commit")!,
 probe nfsd.commit.return = kernel.function("nfsd_commit").return!,
                     module("nfsd").function("nfsd_commit").return ?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        name = "nfsd.commit.return"
@@ -1086,6 +1139,7 @@ probe nfsd.commit.return = kernel.function("nfsd_commit").return!,
 *  Fires when client opens/searchs file on server
 *
 *Arguments:
+*  client_ip : the ip address of client
 *  fh  : file handle of parent dir(the first part is the length of the file handle)
 *  filename : file name 
 *  filelen  : the length of file name
@@ -1094,6 +1148,7 @@ probe nfsd.commit.return = kernel.function("nfsd_commit").return!,
 probe nfsd.lookup = kernel.function("nfsd_lookup")!,
                     module("nfsd").function("nfsd_lookup")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        filelen = $len
@@ -1106,6 +1161,7 @@ probe nfsd.lookup = kernel.function("nfsd_lookup")!,
 probe nfsd.lookup.return = kernel.function("nfsd_lookup").return!,
                             module("nfsd").function("nfsd_lookup").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        name = "nfsd.lookup.return"
@@ -1118,6 +1174,7 @@ probe nfsd.lookup.return = kernel.function("nfsd_lookup").return!,
 *
 * Arguments:
 *
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  filename : file name 
 *  filelen  : the length of file name
@@ -1128,6 +1185,7 @@ probe nfsd.lookup.return = kernel.function("nfsd_lookup").return!,
 probe nfsd.create = kernel.function("nfsd_create")!,         
                     module("nfsd").function("nfsd_create")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        filelen = $flen
@@ -1143,6 +1201,7 @@ probe nfsd.create = kernel.function("nfsd_create")!,
 probe nfsd.create.return = kernel.function("nfsd_create").return!,         
                     module("nfsd").function("nfsd_create").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        name = "nfsd.create.return"
@@ -1156,6 +1215,7 @@ probe nfsd.create.return = kernel.function("nfsd_create").return!,
 *
 * Arguments:
 *
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  filename : file name 
 *  filelen  : the length of file name
@@ -1170,6 +1230,7 @@ probe nfsd.create.return = kernel.function("nfsd_create").return!,
 probe nfsd.createv3 = kernel.function("nfsd_create_v3")!,         
                     module("nfsd").function("nfsd_create_v3")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        filelen = $flen
@@ -1187,6 +1248,9 @@ probe nfsd.createv3 = kernel.function("nfsd_create_v3")!,
 probe nfsd.createv3.return = kernel.function("nfsd_create_v3").return!,         
                     module("nfsd").function("nfsd_create_v3").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+       fh = __svc_fh($fhp)
+
        name = "nfsd.createv3.return"
        retstr = sprintf("%s", nfsderror($return))
 }
@@ -1197,6 +1261,7 @@ probe nfsd.createv3.return = kernel.function("nfsd_create_v3").return!,
 *
 * Arguments:
 *
+*  client_ip : the ip address of client
 *  fh  : file handle (the first part is the length of the file handle)
 *  filename : file name 
 *  filelen  : the length of file name
@@ -1205,6 +1270,7 @@ probe nfsd.createv3.return = kernel.function("nfsd_create_v3").return!,
 probe nfsd.unlink = kernel.function("nfsd_unlink")!,         
                     module("nfsd").function("nfsd_unlink")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
        fh = __svc_fh($fhp)
 
        filelen = $flen
@@ -1218,6 +1284,9 @@ probe nfsd.unlink = kernel.function("nfsd_unlink")!,
 probe nfsd.unlink.return = kernel.function("nfsd_unlink").return!,         
                     module("nfsd").function("nfsd_unlink").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+       fh = __svc_fh($fhp)
+
        name = "nfsd.unlink.return"
        retstr = sprintf("%s", nfsderror($return))
 }
@@ -1227,6 +1296,7 @@ probe nfsd.unlink.return = kernel.function("nfsd_unlink").return!,
 *  Fires when clients rename a file on server side
 *
 * Arguments:
+*  client_ip : the ip address of client
 *   fh : file handler of old path
 *   tfh : file handler of new path
 *   filename : old file name 
@@ -1238,6 +1308,8 @@ probe nfsd.unlink.return = kernel.function("nfsd_unlink").return!,
 probe nfsd.rename =  kernel.function("nfsd_rename")!,
                            module("nfsd").function("nfsd_rename")?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+
        fh = __svc_fh($ffhp)
        tfh = __svc_fh($tfhp)
 
@@ -1253,6 +1325,9 @@ probe nfsd.rename =  kernel.function("nfsd_rename")!,
 probe nfsd.rename.return =  kernel.function("nfsd_rename").return!,
                            module("nfsd").function("nfsd_rename").return?
 {
+       client_ip = addr_from_rqst_str($rqstp)
+       fh = __svc_fh($ffhp)
+
        name = "nfsd.rename.return"
        retstr = sprintf("%s", nfsderror($return))
 }
index 1d47daedb3ae5dba8c659b3ff2df187f55125f1d..3e65d0ea3818d92ae4d23f207a7a5f56c414ad03 100644 (file)
@@ -988,3 +988,27 @@ function addr_from_rqst:long(rqstp:long)
        CATCH_DEREF_FAULT();
 %}
 
+function addr_from_rqst_str:string(_rqstp:long)
+%{ /* pure */
+       struct svc_rqst *rqstp = 
+               (struct svc_rqst *)(long) kread(&(THIS->_rqstp));
+       struct sockaddr_in *addr;
+       unsigned char *bytes;
+
+       if (rqstp) {
+               if (rqstp->rq_addr.ss_family == AF_INET) {
+                       addr = (struct sockaddr_in *) &rqstp->rq_addr;
+                       bytes = (unsigned char *)&addr->sin_addr.s_addr;
+
+                       snprintf(THIS->__retvalue, MAXSTRINGLEN,
+                               "%d.%d.%d.%d:%d", bytes[0], bytes[1], bytes[2], bytes[3],
+                               addr->sin_port);
+               } else
+                       snprintf(THIS->__retvalue, MAXSTRINGLEN, 
+                               "Unsupported Address Family");
+       } else
+               snprintf(THIS->__retvalue, MAXSTRINGLEN, "Null");
+
+       CATCH_DEREF_FAULT();
+%}
+
This page took 0.048943 seconds and 5 git commands to generate.