|
 |
fab312 |
commit 1b438c71d1349dfcbcd17cbf95e6c609a7c5ccac
|
|
 |
fab312 |
Author: David Smith <dsmith@redhat.com>
|
|
 |
fab312 |
Date: Fri Dec 12 13:06:14 2014 -0600
|
|
 |
fab312 |
|
|
 |
fab312 |
Fix PR17690 by adding support for asynchronous NFS rename operations.
|
|
 |
fab312 |
|
|
 |
fab312 |
* tapset/linux/nfs_proc.stp (nfs.proc.rename_setup): Added to support
|
|
 |
fab312 |
asynchronous NFS client rename operations.
|
|
 |
fab312 |
(nfs.proc2.rename_setup): Ditto.
|
|
 |
fab312 |
(nfs.proc3.rename_setup): Ditto.
|
|
 |
fab312 |
(nfs.proc4.rename_setup): Ditto.
|
|
 |
fab312 |
(nfs.proc.rename_done): Ditto.
|
|
 |
fab312 |
(nfs.proc2.rename_done): Ditto.
|
|
 |
fab312 |
(nfs.proc3.rename_done): Ditto.
|
|
 |
fab312 |
(nfs.proc4.rename_done): Ditto.
|
|
 |
fab312 |
(nfs.proc3.rename): Provide default values if the probe point doesn't
|
|
 |
fab312 |
exist.
|
|
 |
fab312 |
(nfs.proc4.rename): Ditto.
|
|
 |
fab312 |
(nfs.proc3.read_setup): Update to handle new argument names.
|
|
 |
fab312 |
(nfs.proc4.read_setup): Ditto.
|
|
 |
fab312 |
(nfs.proc3.read_done): Ditto.
|
|
 |
fab312 |
(nfs.proc4.read_done): Ditto.
|
|
 |
fab312 |
(nfs.proc3.write_setup): Ditto.
|
|
 |
fab312 |
(nfs.proc4.write_setup): Ditto.
|
|
 |
fab312 |
(nfs.proc3.write_done): Ditto.
|
|
 |
fab312 |
(nfs.proc4.write_done): Ditto.
|
|
 |
fab312 |
* testsuite/buildok/nfs_proc-detailed.stp: Update to handle new probe
|
|
 |
fab312 |
points.
|
|
 |
fab312 |
|
|
 |
fab312 |
diff --git a/tapset/linux/nfs_proc.stp b/tapset/linux/nfs_proc.stp
|
|
 |
fab312 |
index 42c328d..1339aee 100644
|
|
 |
fab312 |
--- a/tapset/linux/nfs_proc.stp
|
|
 |
fab312 |
+++ b/tapset/linux/nfs_proc.stp
|
|
 |
fab312 |
@@ -108,8 +108,9 @@ function __nfsv4_bitmask:long(dir:long, i:long)
|
|
 |
fab312 |
{
|
|
 |
fab312 |
%( CONFIG_NFS_V4 == "[ym]" %?
|
|
 |
fab312 |
return @cast(NFS_SERVER(dir), "nfs_server", "kernel:nfs")->attr_bitmask[i]
|
|
 |
fab312 |
-%)
|
|
 |
fab312 |
+%:
|
|
 |
fab312 |
return 0
|
|
 |
fab312 |
+%)
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
%( systemtap_v < "2.3" %?
|
|
 |
fab312 |
@@ -127,9 +128,11 @@ probe nfs.proc.entries = nfs.proc.lookup,
|
|
 |
fab312 |
nfs.proc.read_setup,
|
|
 |
fab312 |
nfs.proc.write_setup,
|
|
 |
fab312 |
nfs.proc.commit_setup,
|
|
 |
fab312 |
+ nfs.proc.rename_setup,
|
|
 |
fab312 |
nfs.proc.read_done,
|
|
 |
fab312 |
nfs.proc.write_done,
|
|
 |
fab312 |
nfs.proc.commit_done,
|
|
 |
fab312 |
+ nfs.proc.rename_done,
|
|
 |
fab312 |
nfs.proc.open,
|
|
 |
fab312 |
nfs.proc.create,
|
|
 |
fab312 |
nfs.proc.rename,
|
|
 |
fab312 |
@@ -146,9 +149,11 @@ probe nfs.proc.return = nfs.proc.lookup.return,
|
|
 |
fab312 |
nfs.proc.read_setup.return,
|
|
 |
fab312 |
nfs.proc.write_setup.return,
|
|
 |
fab312 |
nfs.proc.commit_setup.return,
|
|
 |
fab312 |
+ nfs.proc.rename_setup.return,
|
|
 |
fab312 |
nfs.proc.read_done.return,
|
|
 |
fab312 |
nfs.proc.write_done.return,
|
|
 |
fab312 |
nfs.proc.commit_done.return,
|
|
 |
fab312 |
+ nfs.proc.rename_done.return,
|
|
 |
fab312 |
nfs.proc.open.return,
|
|
 |
fab312 |
nfs.proc.create.return,
|
|
 |
fab312 |
nfs.proc.rename.return,
|
|
 |
fab312 |
@@ -744,22 +749,24 @@ probe nfs.proc2.read_setup.return =
|
|
 |
fab312 |
{
|
|
 |
fab312 |
version = 2
|
|
 |
fab312 |
name = "nfs.proc2.read_setup.return"
|
|
 |
fab312 |
- retvalue = 0;
|
|
 |
fab312 |
+ retvalue = 0
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
probe nfs.proc3.read_setup = kernel.function("nfs3_proc_read_setup") !,
|
|
 |
fab312 |
module("nfs").function("nfs3_proc_read_setup") ?,
|
|
 |
fab312 |
module("nfsv3").function("nfs3_proc_read_setup") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- inode = @defined($data->header) ? $data->header->inode : $data->inode
|
|
 |
fab312 |
+ inode = @choose_defined($hdr->inode,
|
|
 |
fab312 |
+ @choose_defined($data->header->inode,
|
|
 |
fab312 |
+ $data->inode))
|
|
 |
fab312 |
client = NFS_CLIENT(inode)
|
|
 |
fab312 |
server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
prot = get_prot_from_client(client)
|
|
 |
fab312 |
version = 3
|
|
 |
fab312 |
- fh =
|
|
 |
fab312 |
+ fh = 0
|
|
 |
fab312 |
|
|
 |
fab312 |
- count = @_nfs_data_args_count($data)
|
|
 |
fab312 |
- offset = $data->args->offset
|
|
 |
fab312 |
+ count = @_nfs_data_args_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ offset = @choose_defined($hdr->args->offset, $data->args->offset)
|
|
 |
fab312 |
|
|
 |
fab312 |
name = "nfs.proc3.read_setup"
|
|
 |
fab312 |
argstr = sprintf("%d,%d", count, offset)
|
|
 |
fab312 |
@@ -775,21 +782,23 @@ probe nfs.proc3.read_setup.return =
|
|
 |
fab312 |
{
|
|
 |
fab312 |
version = 3
|
|
 |
fab312 |
name = "nfs.proc3.read_setup.return"
|
|
 |
fab312 |
- retvalue = 0;
|
|
 |
fab312 |
+ retvalue = 0
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
probe nfs.proc4.read_setup = kernel.function("nfs4_proc_read_setup") !,
|
|
 |
fab312 |
module("nfs").function("nfs4_proc_read_setup") ?,
|
|
 |
fab312 |
module("nfsv4").function("nfs4_proc_read_setup") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- inode = @defined($data->header) ? $data->header->inode : $data->inode
|
|
 |
fab312 |
+ inode = @choose_defined($hdr->inode,
|
|
 |
fab312 |
+ @choose_defined($data->header->inode,
|
|
 |
fab312 |
+ $data->inode))
|
|
 |
fab312 |
client = NFS_CLIENT(inode)
|
|
 |
fab312 |
server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
prot = get_prot_from_client(client)
|
|
 |
fab312 |
version = 4
|
|
 |
fab312 |
|
|
 |
fab312 |
- count = @_nfs_data_args_count($data)
|
|
 |
fab312 |
- offset = $data->args->offset
|
|
 |
fab312 |
+ count = @_nfs_data_args_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ offset = @choose_defined($hdr->args->offset, $data->args->offset)
|
|
 |
fab312 |
//timestamp = $jiffies
|
|
 |
fab312 |
|
|
 |
fab312 |
name = "nfs.proc4.read_setup"
|
|
 |
fab312 |
@@ -805,7 +814,7 @@ probe nfs.proc4.read_setup.return =
|
|
 |
fab312 |
{
|
|
 |
fab312 |
version = 4
|
|
 |
fab312 |
name = "nfs.proc4.read_setup.return"
|
|
 |
fab312 |
- retvalue = 0;
|
|
 |
fab312 |
+ retvalue = 0
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
/**
|
|
 |
fab312 |
@@ -880,10 +889,10 @@ probe nfs.proc3.read_done = kernel.function("nfs3_read_done") !,
|
|
 |
fab312 |
module("nfs").function("nfs3_read_done") ?,
|
|
 |
fab312 |
module("nfsv3").function("nfs3_read_done") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- if (@defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
- server_ip = @_nfs_data_server_ip($data)
|
|
 |
fab312 |
- prot = @_nfs_data_prot($data)
|
|
 |
fab312 |
- count = @_nfs_data_res_count($data)
|
|
 |
fab312 |
+ if (@defined($hdr) || @defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
+ server_ip = @_nfs_data_server_ip(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ prot = @_nfs_data_prot(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ count = @_nfs_data_res_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
}
|
|
 |
fab312 |
else {
|
|
 |
fab312 |
server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
|
 |
fab312 |
@@ -914,11 +923,11 @@ probe nfs.proc4.read_done = kernel.function("nfs4_read_done") !,
|
|
 |
fab312 |
module("nfs").function("nfs4_read_done") ?,
|
|
 |
fab312 |
module("nfsv4").function("nfs4_read_done") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- if (@defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
- server_ip = @_nfs_data_server_ip($data)
|
|
 |
fab312 |
- prot = @_nfs_data_prot($data)
|
|
 |
fab312 |
- count = @_nfs_data_res_count($data)
|
|
 |
fab312 |
- timestamp = @_nfs_data_timestamp($data)
|
|
 |
fab312 |
+ if (@defined($hdr) || @defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
+ server_ip = @_nfs_data_server_ip(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ prot = @_nfs_data_prot(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ count = @_nfs_data_res_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ timestamp = @_nfs_data_timestamp(@choose_defined($hdr, $data))
|
|
 |
fab312 |
}
|
|
 |
fab312 |
else {
|
|
 |
fab312 |
server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
|
 |
fab312 |
@@ -1031,15 +1040,18 @@ probe nfs.proc3.write_setup =
|
|
 |
fab312 |
module("nfs").function("nfs3_proc_write_setup") ?,
|
|
 |
fab312 |
module("nfsv3").function("nfs3_proc_write_setup") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- inode = @defined($data->header) ? $data->header->inode : $data->inode
|
|
 |
fab312 |
+ inode = @choose_defined($hdr->inode,
|
|
 |
fab312 |
+ @choose_defined($data->header->inode,
|
|
 |
fab312 |
+ $data->inode))
|
|
 |
fab312 |
client = NFS_CLIENT(inode)
|
|
 |
fab312 |
server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
prot = get_prot_from_client(client)
|
|
 |
fab312 |
version = 3
|
|
 |
fab312 |
|
|
 |
fab312 |
- count = @_nfs_data_args_count($data)
|
|
 |
fab312 |
- offset = $data->args->offset
|
|
 |
fab312 |
- how = @choose_defined($how, $data->args->stable)
|
|
 |
fab312 |
+ count = @_nfs_data_args_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ offset = @choose_defined($hdr->args->offset, $data->args->offset)
|
|
 |
fab312 |
+ how = @choose_defined($hdr->args->stable,
|
|
 |
fab312 |
+ @choose_defined($how, $data->args->stable))
|
|
 |
fab312 |
bitmask0 = 0
|
|
 |
fab312 |
bitmask1 = 0
|
|
 |
fab312 |
|
|
 |
fab312 |
@@ -1064,15 +1076,18 @@ probe nfs.proc4.write_setup =
|
|
 |
fab312 |
module("nfs").function("nfs4_proc_write_setup") ?,
|
|
 |
fab312 |
module("nfsv4").function("nfs4_proc_write_setup") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- inode = @defined($data->header) ? $data->header->inode : $data->inode
|
|
 |
fab312 |
+ inode = @choose_defined($hdr->inode,
|
|
 |
fab312 |
+ @choose_defined($data->header->inode,
|
|
 |
fab312 |
+ $data->inode))
|
|
 |
fab312 |
client = NFS_CLIENT(inode)
|
|
 |
fab312 |
server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
prot = get_prot_from_client(client)
|
|
 |
fab312 |
version = 4
|
|
 |
fab312 |
|
|
 |
fab312 |
- count = @_nfs_data_args_count($data)
|
|
 |
fab312 |
- offset = $data->args->offset
|
|
 |
fab312 |
- how = @choose_defined($how, $data->args->stable)
|
|
 |
fab312 |
+ count = @_nfs_data_args_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ offset = @choose_defined($hdr->args->offset, $data->args->offset)
|
|
 |
fab312 |
+ how = @choose_defined($hdr->args->stable,
|
|
 |
fab312 |
+ @choose_defined($how, $data->args->stable))
|
|
 |
fab312 |
bitmask0 = __nfsv4_bitmask(inode, 0)
|
|
 |
fab312 |
bitmask1 = __nfsv4_bitmask(inode, 1)
|
|
 |
fab312 |
//timestamp = $jiffies
|
|
 |
fab312 |
@@ -1169,11 +1184,11 @@ probe nfs.proc3.write_done = kernel.function("nfs3_write_done") !,
|
|
 |
fab312 |
module("nfs").function("nfs3_write_done") ?,
|
|
 |
fab312 |
module("nfsv3").function("nfs3_write_done") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- if (@defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
- server_ip = @_nfs_data_server_ip($data)
|
|
 |
fab312 |
- prot = @_nfs_data_prot($data)
|
|
 |
fab312 |
- count = @_nfs_data_res_count($data)
|
|
 |
fab312 |
- valid = @_nfs_data_valid($data)
|
|
 |
fab312 |
+ if (@defined($hdr) || @defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
+ server_ip = @_nfs_data_server_ip(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ prot = @_nfs_data_prot(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ count = @_nfs_data_res_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ valid = @_nfs_data_valid(@choose_defined($hdr, $data))
|
|
 |
fab312 |
}
|
|
 |
fab312 |
else {
|
|
 |
fab312 |
server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
|
 |
fab312 |
@@ -1203,12 +1218,12 @@ probe nfs.proc4.write_done = kernel.function("nfs4_write_done") !,
|
|
 |
fab312 |
module("nfs").function("nfs4_write_done") ?,
|
|
 |
fab312 |
module("nfsv4").function("nfs4_write_done") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
- if (@defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
- server_ip = @_nfs_data_server_ip($data)
|
|
 |
fab312 |
- prot = @_nfs_data_prot($data)
|
|
 |
fab312 |
- count = @_nfs_data_res_count($data)
|
|
 |
fab312 |
- valid = @_nfs_data_valid($data)
|
|
 |
fab312 |
- timestamp = @_nfs_data_timestamp($data)
|
|
 |
fab312 |
+ if (@defined($hdr) || @defined($data)) { # kernels >= 2.6.10
|
|
 |
fab312 |
+ server_ip = @_nfs_data_server_ip(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ prot = @_nfs_data_prot(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ count = @_nfs_data_res_count(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ valid = @_nfs_data_valid(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ timestamp = @_nfs_data_timestamp(@choose_defined($hdr, $data))
|
|
 |
fab312 |
}
|
|
 |
fab312 |
else {
|
|
 |
fab312 |
server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
|
 |
fab312 |
@@ -1251,7 +1266,7 @@ probe nfs.proc4.write_done.return =
|
|
 |
fab312 |
*
|
|
 |
fab312 |
* The commit_setup function is used to setup a commit RPC task.
|
|
 |
fab312 |
* Is is not doing the actual commit operation.
|
|
 |
fab312 |
- * It is does not exist in NFSv2.
|
|
 |
fab312 |
+ * It does not exist in NFSv2.
|
|
 |
fab312 |
*/
|
|
 |
fab312 |
|
|
 |
fab312 |
probe nfs.proc.commit_setup = nfs.proc3.commit_setup,
|
|
 |
fab312 |
@@ -1423,6 +1438,207 @@ probe nfs.proc4.commit_done.return =
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
/**
|
|
 |
fab312 |
+ * probe nfs.proc.rename_setup - NFS client setting up a rename RPC task
|
|
 |
fab312 |
+ *
|
|
 |
fab312 |
+ * @server_ip: IP address of server
|
|
 |
fab312 |
+ * @prot: transfer protocol
|
|
 |
fab312 |
+ * @version: NFS version
|
|
 |
fab312 |
+ * @fh: file handle of parent dir
|
|
 |
fab312 |
+ *
|
|
 |
fab312 |
+ * The rename_setup function is used to setup a rename RPC task.
|
|
 |
fab312 |
+ * Is is not doing the actual rename operation.
|
|
 |
fab312 |
+ */
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc.rename_setup = nfs.proc2.rename_setup ?,
|
|
 |
fab312 |
+ nfs.proc3.rename_setup,
|
|
 |
fab312 |
+ nfs.proc4.rename_setup
|
|
 |
fab312 |
+{}
|
|
 |
fab312 |
+probe nfs.proc.rename_setup.return = nfs.proc2.rename_setup.return ?,
|
|
 |
fab312 |
+ nfs.proc3.rename_setup.return,
|
|
 |
fab312 |
+ nfs.proc4.rename_setup.return
|
|
 |
fab312 |
+{}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc2.rename_setup =
|
|
 |
fab312 |
+ kernel.function("nfs_proc_rename_setup") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs_proc_rename_setup") ?,
|
|
 |
fab312 |
+ module("nfsv2").function("nfs_proc_rename_setup") ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = NFS_CLIENT($dir)
|
|
 |
fab312 |
+ server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
+ prot = get_prot_from_client(client)
|
|
 |
fab312 |
+ version = 2
|
|
 |
fab312 |
+ fh = NFS_FH($dir)
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc2.rename_setup"
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ argstr = sprintf("%d", fh)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc2.rename_setup.return =
|
|
 |
fab312 |
+ kernel.function("nfs2_proc_rename_setup").return !,
|
|
 |
fab312 |
+ module("nfs").function("nfs_proc_rename_setup").return ?,
|
|
 |
fab312 |
+ module("nfsv2").function("nfs_proc_rename_setup").return ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 2
|
|
 |
fab312 |
+ name = "nfs.proc2.rename_setup.return"
|
|
 |
fab312 |
+ retvalue = 0
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc3.rename_setup =
|
|
 |
fab312 |
+ kernel.function("nfs3_proc_rename_setup") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs3_proc_rename_setup") ?,
|
|
 |
fab312 |
+ module("nfsv3").function("nfs3_proc_rename_setup") ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = NFS_CLIENT($dir)
|
|
 |
fab312 |
+ server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
+ prot = get_prot_from_client(client)
|
|
 |
fab312 |
+ version = 3
|
|
 |
fab312 |
+ fh = NFS_FH($dir)
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc3.rename_setup"
|
|
 |
fab312 |
+ argstr = sprintf("%d", fh)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc3.rename_setup.return =
|
|
 |
fab312 |
+ kernel.function("nfs3_proc_rename_setup").return !,
|
|
 |
fab312 |
+ module("nfs").function("nfs3_proc_rename_setup").return ?,
|
|
 |
fab312 |
+ module("nfsv3").function("nfs3_proc_rename_setup").return ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 3
|
|
 |
fab312 |
+ name = "nfs.proc3.rename_setup.return"
|
|
 |
fab312 |
+ retvalue = 0
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc4.rename_setup =
|
|
 |
fab312 |
+ kernel.function("nfs4_proc_rename_setup") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs4_proc_rename_setup") ?,
|
|
 |
fab312 |
+ module("nfsv4").function("nfs4_proc_rename_setup") ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = NFS_CLIENT($dir)
|
|
 |
fab312 |
+ server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
+ prot = get_prot_from_client(client)
|
|
 |
fab312 |
+ version = 4
|
|
 |
fab312 |
+ fh = NFS_FH($dir)
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc4.rename_setup"
|
|
 |
fab312 |
+ argstr = sprintf("%d", fh)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc4.rename_setup.return =
|
|
 |
fab312 |
+ kernel.function("nfs4_proc_rename_setup").return !,
|
|
 |
fab312 |
+ module("nfs").function("nfs4_proc_rename_setup").return ?,
|
|
 |
fab312 |
+ module("nfsv4").function("nfs4_proc_rename_setup").return ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 4
|
|
 |
fab312 |
+ name = "nfs.proc4.rename_setup.return"
|
|
 |
fab312 |
+ retvalue = 0
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+/**
|
|
 |
fab312 |
+ * probe nfs.proc.rename_done - NFS client response to a rename RPC task
|
|
 |
fab312 |
+ *
|
|
 |
fab312 |
+ * @server_ip: IP address of server
|
|
 |
fab312 |
+ * @prot: transfer protocol
|
|
 |
fab312 |
+ * @version: NFS version
|
|
 |
fab312 |
+ * @status: result of last operation
|
|
 |
fab312 |
+ * @timestamp : V4 timestamp, which is used for lease renewal
|
|
 |
fab312 |
+ * @old_fh: file handle of old parent dir
|
|
 |
fab312 |
+ * @new_fh: file handle of new parent dir
|
|
 |
fab312 |
+ *
|
|
 |
fab312 |
+ * Fires when a reply to a rename RPC task is received or some rename
|
|
 |
fab312 |
+ * error occurs (timeout or socket shutdown).
|
|
 |
fab312 |
+ */
|
|
 |
fab312 |
+probe nfs.proc.rename_done = nfs.proc2.rename_done ?,
|
|
 |
fab312 |
+ nfs.proc3.rename_done,
|
|
 |
fab312 |
+ nfs.proc4.rename_done
|
|
 |
fab312 |
+{}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc.rename_done.return = nfs.proc2.rename_done.return ?,
|
|
 |
fab312 |
+ nfs.proc3.rename_done.return,
|
|
 |
fab312 |
+ nfs.proc4.rename_done.return
|
|
 |
fab312 |
+{}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc2.rename_done = kernel.function("nfs_proc_rename_done") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs_proc_rename_done") ?,
|
|
 |
fab312 |
+ module("nfsv2").function("nfs_proc_rename_done") ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = NFS_CLIENT($old_dir)
|
|
 |
fab312 |
+ server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
+ prot = get_prot_from_client(client)
|
|
 |
fab312 |
+ version = 2
|
|
 |
fab312 |
+ status = $task->tk_status
|
|
 |
fab312 |
+ timestamp = 0
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ old_fh = NFS_FH($old_dir)
|
|
 |
fab312 |
+ new_fh = NFS_FH($new_dir)
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc2.rename_done"
|
|
 |
fab312 |
+ argstr = sprintf("%d", status)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc2.rename_done.return =
|
|
 |
fab312 |
+ kernel.function("nfs_rename_done").return !,
|
|
 |
fab312 |
+ module("nfs").function("nfs_rename_done").return !,
|
|
 |
fab312 |
+ module("nfsv2").function("nfs_rename_done").return !
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 2
|
|
 |
fab312 |
+ name = "nfs.proc2.rename_done.return"
|
|
 |
fab312 |
+ retstr = sprintf("%d", $return)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc3.rename_done =
|
|
 |
fab312 |
+ kernel.function("nfs3_proc_rename_done") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs3_proc_rename_done") ?,
|
|
 |
fab312 |
+ module("nfsv3").function("nfs3_proc_rename_done") ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = NFS_CLIENT($old_dir)
|
|
 |
fab312 |
+ server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
+ prot = get_prot_from_client(client)
|
|
 |
fab312 |
+ version = 3
|
|
 |
fab312 |
+ status = $task->tk_status
|
|
 |
fab312 |
+ timestamp = 0
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ old_fh = NFS_FH($old_dir)
|
|
 |
fab312 |
+ new_fh = NFS_FH($new_dir)
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc3.rename_done"
|
|
 |
fab312 |
+ argstr = sprintf("%d", status)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc3.rename_done.return =
|
|
 |
fab312 |
+ kernel.function("nfs3_proc_rename_done").return !,
|
|
 |
fab312 |
+ module("nfs").function("nfs3_proc_rename_done").return ?,
|
|
 |
fab312 |
+ module("nfsv3").function("nfs3_proc_rename_done").return ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 3
|
|
 |
fab312 |
+ name = "nfs.proc3.rename_done.return"
|
|
 |
fab312 |
+ retstr = sprintf("%d", $return)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc4.rename_done =
|
|
 |
fab312 |
+ kernel.function("nfs4_proc_rename_done") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs4_proc_rename_done") ?,
|
|
 |
fab312 |
+ module("nfsv4").function("nfs4_proc_rename_done") ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = NFS_CLIENT($old_dir)
|
|
 |
fab312 |
+ server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
+ prot = get_prot_from_client(client)
|
|
 |
fab312 |
+ version = 4
|
|
 |
fab312 |
+ timestamp = @_nfs_data_timestamp(@choose_defined($hdr, $data))
|
|
 |
fab312 |
+ status = $task->tk_status
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ old_fh = NFS_FH($old_dir)
|
|
 |
fab312 |
+ new_fh = NFS_FH($new_dir)
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc4.rename_done"
|
|
 |
fab312 |
+ argstr = sprintf("%d", status)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc4.rename_done.return =
|
|
 |
fab312 |
+ kernel.function("nfs4_proc_rename_done").return !,
|
|
 |
fab312 |
+ module("nfs").function("nfs4_proc_rename_done").return ?,
|
|
 |
fab312 |
+ module("nfsv4").function("nfs4_proc_rename_done").return ?
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 4
|
|
 |
fab312 |
+ name = "nfs.proc4.rename_done.return"
|
|
 |
fab312 |
+ retstr = sprintf("%d", $return)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+/**
|
|
 |
fab312 |
* probe nfs.proc.open - NFS client allocates file read/write context information
|
|
 |
fab312 |
*
|
|
 |
fab312 |
* @server_ip: IP address of server
|
|
 |
fab312 |
@@ -1533,7 +1749,7 @@ probe nfs.proc4.handle_exception.return =
|
|
 |
fab312 |
* @server_ip: IP address of server
|
|
 |
fab312 |
* @prot: transfer protocol
|
|
 |
fab312 |
* @version: NFS version (the function is used for all NFS version)
|
|
 |
fab312 |
- * @fh: file handler of parent dir
|
|
 |
fab312 |
+ * @fh: file handle of parent dir
|
|
 |
fab312 |
* @filename: file name
|
|
 |
fab312 |
* @filelen: length of file name
|
|
 |
fab312 |
* @flag: indicates create mode (only for NFSv3 and NFSv4)
|
|
 |
fab312 |
@@ -1655,7 +1871,7 @@ probe nfs.proc4.create.return =
|
|
 |
fab312 |
* @server_ip: IP address of server
|
|
 |
fab312 |
* @prot: transfer protocol
|
|
 |
fab312 |
* @version: NFS version (the function is used for all NFS version)
|
|
 |
fab312 |
- * @fh: file handler of parent dir
|
|
 |
fab312 |
+ * @fh: file handle of parent dir
|
|
 |
fab312 |
* @filename: file name
|
|
 |
fab312 |
* @filelen: length of file name
|
|
 |
fab312 |
*/
|
|
 |
fab312 |
@@ -1770,8 +1986,8 @@ probe nfs.proc4.remove.return =
|
|
 |
fab312 |
* @server_ip: IP address of server
|
|
 |
fab312 |
* @prot: transfer protocol
|
|
 |
fab312 |
* @version: NFS version (the function is used for all NFS version)
|
|
 |
fab312 |
- * @old_fh: file handler of old parent dir
|
|
 |
fab312 |
- * @new_fh: file handler of new parent dir
|
|
 |
fab312 |
+ * @old_fh: file handle of old parent dir
|
|
 |
fab312 |
+ * @new_fh: file handle of new parent dir
|
|
 |
fab312 |
* @old_name: old file name
|
|
 |
fab312 |
* @old_filelen: length of old file name
|
|
 |
fab312 |
* @new_name: new file name
|
|
 |
fab312 |
@@ -1834,14 +2050,20 @@ probe nfs.proc2.rename.return =
|
|
 |
fab312 |
retstr = (@defined($return) ? sprintf("%d", $return) : "N/A")
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
-probe nfs.proc3.rename = kernel.function("nfs3_proc_rename") !,
|
|
 |
fab312 |
+probe nfs.proc3.rename = _nfs.proc3.rename !, _nfs.proc3.missing_rename
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 3
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc3.rename"
|
|
 |
fab312 |
+ argstr = sprintf("%s,%s", old_name, new_name)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe _nfs.proc3.rename = kernel.function("nfs3_proc_rename") !,
|
|
 |
fab312 |
module("nfs").function("nfs3_proc_rename") ?,
|
|
 |
fab312 |
module("nfsv3").function("nfs3_proc_rename") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
client = NFS_CLIENT($old_dir)
|
|
 |
fab312 |
server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
prot = get_prot_from_client(client)
|
|
 |
fab312 |
- version = 3
|
|
 |
fab312 |
|
|
 |
fab312 |
old_fh = NFS_FH($old_dir)
|
|
 |
fab312 |
old_filelen = $old_name->len
|
|
 |
fab312 |
@@ -1849,29 +2071,46 @@ probe nfs.proc3.rename = kernel.function("nfs3_proc_rename") !,
|
|
 |
fab312 |
new_fh = NFS_FH($new_dir)
|
|
 |
fab312 |
new_filelen = $new_name->len
|
|
 |
fab312 |
new_name = kernel_string_n($new_name->name, new_filelen)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe _nfs.proc3.missing_rename = never
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = 0
|
|
 |
fab312 |
+ server_ip = 0
|
|
 |
fab312 |
+ prot = 0
|
|
 |
fab312 |
|
|
 |
fab312 |
- name = "nfs.proc3.rename"
|
|
 |
fab312 |
- argstr = sprintf("%s,%s", old_name, new_name)
|
|
 |
fab312 |
+ old_fh = 0
|
|
 |
fab312 |
+ old_filelen = 0
|
|
 |
fab312 |
+ old_name = ""
|
|
 |
fab312 |
+ new_fh = 0
|
|
 |
fab312 |
+ new_filelen = 0
|
|
 |
fab312 |
+ new_name = ""
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
probe nfs.proc3.rename.return =
|
|
 |
fab312 |
kernel.function("nfs3_proc_rename").return !,
|
|
 |
fab312 |
module("nfs").function("nfs3_proc_rename").return ?,
|
|
 |
fab312 |
- module("nfsv3").function("nfs3_proc_rename").return ?
|
|
 |
fab312 |
+ module("nfsv3").function("nfs3_proc_rename").return !,
|
|
 |
fab312 |
+ never
|
|
 |
fab312 |
{
|
|
 |
fab312 |
name = "nfs.proc3.rename.return"
|
|
 |
fab312 |
version = 3
|
|
 |
fab312 |
- retstr = sprintf("%d", $return)
|
|
 |
fab312 |
+ retstr = (@defined($return) ? sprintf("%d", $return) : "N/A")
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
-probe nfs.proc4.rename = kernel.function("nfs4_proc_rename") !,
|
|
 |
fab312 |
- module("nfs").function("nfs4_proc_rename") ?,
|
|
 |
fab312 |
- module("nfsv4").function("nfs4_proc_rename") ?
|
|
 |
fab312 |
+probe nfs.proc4.rename = _nfs.proc4.rename !, _nfs.proc4.missing_rename
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ version = 4
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+ name = "nfs.proc4.rename"
|
|
 |
fab312 |
+ argstr = sprintf("%s,%s", old_name, new_name)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe _nfs.proc4.rename = kernel.function("nfs4_proc_rename") !,
|
|
 |
fab312 |
+ module("nfs").function("nfs4_proc_rename") ?,
|
|
 |
fab312 |
+ module("nfsv4").function("nfs4_proc_rename") ?
|
|
 |
fab312 |
{
|
|
 |
fab312 |
client = NFS_CLIENT($old_dir)
|
|
 |
fab312 |
server_ip = get_ip_from_client(client)
|
|
 |
fab312 |
prot = get_prot_from_client(client)
|
|
 |
fab312 |
- version = 4
|
|
 |
fab312 |
|
|
 |
fab312 |
old_fh = NFS_FH($old_dir)
|
|
 |
fab312 |
old_filelen = $old_name->len
|
|
 |
fab312 |
@@ -1879,17 +2118,28 @@ probe nfs.proc4.rename = kernel.function("nfs4_proc_rename") !,
|
|
 |
fab312 |
new_fh = NFS_FH($new_dir)
|
|
 |
fab312 |
new_filelen = $new_name->len
|
|
 |
fab312 |
new_name = kernel_string_n($new_name->name, new_filelen)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe _nfs.proc4.missing_rename = never
|
|
 |
fab312 |
+{
|
|
 |
fab312 |
+ client = 0
|
|
 |
fab312 |
+ server_ip = 0
|
|
 |
fab312 |
+ prot = 0
|
|
 |
fab312 |
|
|
 |
fab312 |
- name = "nfs.proc4.rename"
|
|
 |
fab312 |
- argstr = sprintf("%s,%s", old_name, new_name)
|
|
 |
fab312 |
+ old_fh = 0
|
|
 |
fab312 |
+ old_filelen = 0
|
|
 |
fab312 |
+ old_name = ""
|
|
 |
fab312 |
+ new_fh = 0
|
|
 |
fab312 |
+ new_filelen = 0
|
|
 |
fab312 |
+ new_name = ""
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
probe nfs.proc4.rename.return =
|
|
 |
fab312 |
kernel.function("nfs4_proc_rename").return !,
|
|
 |
fab312 |
module("nfs").function("nfs4_proc_rename").return ?,
|
|
 |
fab312 |
- module("nfsv4").function("nfs4_proc_rename").return ?
|
|
 |
fab312 |
+ module("nfsv4").function("nfs4_proc_rename").return !,
|
|
 |
fab312 |
+ never
|
|
 |
fab312 |
{
|
|
 |
fab312 |
name = "nfs.proc4.rename.return"
|
|
 |
fab312 |
version = 4
|
|
 |
fab312 |
- retstr = sprintf("%d", $return)
|
|
 |
fab312 |
+ retstr = (@defined($return) ? sprintf("%d", $return) : "N/A")
|
|
 |
fab312 |
}
|
|
 |
fab312 |
diff --git a/testsuite/buildok/nfs_proc-detailed.stp b/testsuite/buildok/nfs_proc-detailed.stp
|
|
 |
fab312 |
index 273b20c..740d6bd 100755
|
|
 |
fab312 |
--- a/testsuite/buildok/nfs_proc-detailed.stp
|
|
 |
fab312 |
+++ b/testsuite/buildok/nfs_proc-detailed.stp
|
|
 |
fab312 |
@@ -1,5 +1,6 @@
|
|
 |
fab312 |
#! stap -p4
|
|
 |
fab312 |
|
|
 |
fab312 |
+
|
|
 |
fab312 |
probe nfs.proc.lookup {
|
|
 |
fab312 |
printf("%s(%s)\n", name, argstr)
|
|
 |
fab312 |
printf("%d %d %d %d\n", server_ip, prot, version, name_len)
|
|
 |
fab312 |
@@ -96,6 +97,26 @@ probe nfs.proc.commit_done.return {
|
|
 |
fab312 |
printf("%d: %s(%s)\n", version, name, retstr)
|
|
 |
fab312 |
}
|
|
 |
fab312 |
|
|
 |
fab312 |
+probe nfs.proc.rename_setup {
|
|
 |
fab312 |
+ printf("%s(%s)\n", name, argstr)
|
|
 |
fab312 |
+ printf("%d %d %d %d\n", client, server_ip, prot,
|
|
 |
fab312 |
+ version)
|
|
 |
fab312 |
+ printf("%d\n", fh)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc.rename_setup.return {
|
|
 |
fab312 |
+ printf("%d: %s(%d)\n", version, name, retvalue)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
+probe nfs.proc.rename_done {
|
|
 |
fab312 |
+ printf("%s(%s)\n", name, argstr)
|
|
 |
fab312 |
+ printf("%d %d %d\n", server_ip, prot, version)
|
|
 |
fab312 |
+ printf("%d %d\n", timestamp, status)
|
|
 |
fab312 |
+ printf("%d %d\n", old_fh, new_fh)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+probe nfs.proc.rename_done.return {
|
|
 |
fab312 |
+ printf("%d: %s(%s)\n", version, name, retstr)
|
|
 |
fab312 |
+}
|
|
 |
fab312 |
+
|
|
 |
fab312 |
probe nfs.proc.open {
|
|
 |
fab312 |
printf("%s(%s)\n", name, argstr)
|
|
 |
fab312 |
printf("%d %d %d\n", server_ip, prot, version)
|
|
 |
fab312 |
@@ -140,8 +161,9 @@ probe nfs.proc.remove.return {
|
|
 |
fab312 |
|
|
 |
fab312 |
probe nfs.proc.rename {
|
|
 |
fab312 |
printf("%s(%s)\n", name, argstr)
|
|
 |
fab312 |
- printf("%d %d %d %d %d %d %d\n", server_ip, prot, version, old_fh,
|
|
 |
fab312 |
- old_filelen, new_fh, new_filelen)
|
|
 |
fab312 |
+ printf("%d %d %d\n", server_ip, prot, version)
|
|
 |
fab312 |
+ printf("%d %d %s\n", old_fh, old_filelen, old_name)
|
|
 |
fab312 |
+ printf("%d %d %s\n", new_fh, new_filelen, new_name)
|
|
 |
fab312 |
}
|
|
 |
fab312 |
probe nfs.proc.rename.return {
|
|
 |
fab312 |
printf("%d: %s(%s)\n", version, name, retstr)
|