summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2007-09-27 10:49:32 -0400
committerFrank Ch. Eigler <fche@elastic.org>2007-09-27 10:49:32 -0400
commite154a2613d455f3bdf13c8aeb179c8634f1b6bf5 (patch)
tree34eff07c828d9dae02be20ec3c3d87650ec6e7ee
parent000e930e3b60f784a5c1889c8fa59b368c1a4de0 (diff)
parent5e4c160908b88e1272ec09f2c88d7612ce82b7c8 (diff)
downloadsystemtap-steved-e154a2613d455f3bdf13c8aeb179c8634f1b6bf5.tar.gz
systemtap-steved-e154a2613d455f3bdf13c8aeb179c8634f1b6bf5.tar.xz
systemtap-steved-e154a2613d455f3bdf13c8aeb179c8634f1b6bf5.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
-rw-r--r--tapset/ChangeLog44
-rw-r--r--tapset/nfs.stp4
-rw-r--r--tapset/nfs_proc.stp3
-rw-r--r--tapset/rpc.stp17
-rw-r--r--tapset/socket.stp10
-rw-r--r--tapset/tcp.stp6
-rw-r--r--tapset/vfs.stp34
7 files changed, 98 insertions, 20 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog
index e313629f..65abd7d5 100644
--- a/tapset/ChangeLog
+++ b/tapset/ChangeLog
@@ -1,3 +1,47 @@
+2007-09-27 Wenji Huang <wenji.huang@oracle.com>
+
+ * rpc.stp (clones_from_clnt, tasks_from_clnt): Fix for kernel >= 2.6.22.
+ * nfs.stp (__nfsi_ndirty) : Ditto.
+ * nfs_proc.stp (__nfsv4_bitmask) : Make bitmask valid according to CONFIG.
+
+2007-09-27 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ From Cai Fei <caifei@cn.fujitsu.com>
+ * rpc.stp (sunrpc.clnt.shutdown_client): Add argument progname's
+ definition for probe sunrpc.clnt.shutdown_client, because it
+ is in the man page but not defined in tapset.
+
+2007-09-27 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ From Cai Fei <caifei@cn.fujitsu.com>
+ * rpc.stp (sunrpc.clnt.call_sync, sunrpc.clnt.call_async): Fix
+ the output format of flags in argstr from hex to decimal just
+ to make it same as other probes.
+
+2007-09-27 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ * tcp.stp (sendmsg.return): Fix description of size variable.
+ * tcp.stp (recvmsg.return): Ditto.
+
+2007-09-27 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ * socket.stp (aio_read): Fix compile error with kernel version
+ less than 2.6.19.
+ * socket.stp (aio_write): Ditto.
+
+2007-09-26 Mike Mason <mmlnx@us.ibm.com>
+
+ * vfs.stp:
+ Specified explicit types for __find_bdevname() parameters
+ and return value. The types could not be determined correctly
+ when __find_bdevname() was used in nfs.stp
+
+ Added __page_index() to work around problem dereferencing unions
+ in stap language.
+
+ Made generic.fop.sendfile conditional on kernel <= 2.6.22.
+ generic_file_sendfile() was removed in 2.6.23.
+
2007-09-26 Zhaolei <zhaolei@cn.fujitsu.com>
From Lai Jiangshan <laijs@cn.fujitsu.com>
diff --git a/tapset/nfs.stp b/tapset/nfs.stp
index 61443581..87a2f4cc 100644
--- a/tapset/nfs.stp
+++ b/tapset/nfs.stp
@@ -60,7 +60,11 @@ function __nfsi_ndirty:long (inode:long) %{ /* pure */
THIS->__retvalue = -1;
else {
struct nfs_inode * nfsi = NFS_I(inode);
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,22)
THIS->__retvalue = kread(&(nfsi->ndirty));
+#else
+ THIS->__retvalue = -1;
+#endif
}
CATCH_DEREF_FAULT();
%}
diff --git a/tapset/nfs_proc.stp b/tapset/nfs_proc.stp
index f7129801..0b07fb54 100644
--- a/tapset/nfs_proc.stp
+++ b/tapset/nfs_proc.stp
@@ -124,8 +124,9 @@ function __nfsv4_bitmask :long(dir:long,i:long) %{ /* pure */
struct inode * dir = (struct inode *)(long)(THIS->dir);
struct nfs_server * server = NFS_SERVER(dir); /* FIXME: deref hazard! */
+#ifdef CONFIG_NFS_V4
THIS->__retvalue = kread(&(server->attr_bitmask[i]));
-
+#endif
CATCH_DEREF_FAULT();
%}
diff --git a/tapset/rpc.stp b/tapset/rpc.stp
index 480c67c3..3d17d221 100644
--- a/tapset/rpc.stp
+++ b/tapset/rpc.stp
@@ -192,6 +192,7 @@ probe sunrpc.clnt.shutdown_client = kernel.function("rpc_shutdown_client") ?,
module("sunrpc").function("rpc_shutdown_client") ?
{
servername = kernel_string($clnt->cl_server)
+ progname = kernel_string($clnt->cl_protname)
prog = prog_from_clnt($clnt)
vers = vers_from_clnt($clnt)
prot = prot_from_clnt($clnt)
@@ -214,8 +215,8 @@ probe sunrpc.clnt.shutdown_client = kernel.function("rpc_shutdown_client") ?,
om_execute = $clnt->cl_metrics->om_execute
name = "sunrpc.clnt.shutdown_client"
- argstr = sprintf("%s %s %d %d %d %d %d %d", servername, progname,
- vers, prot, port, authflavor, clones, tasks)
+ argstr = sprintf("%s %s %d %d %d %d %d %d %d", servername, progname,
+ prog, vers, prot, port, authflavor, clones, tasks)
}
probe sunrpc.clnt.shutdown_client.return =
@@ -299,7 +300,7 @@ probe sunrpc.clnt.call_sync = kernel.function("rpc_call_sync") ?,
flags = $flags
name = "sunrpc.clnt.call_sync"
- argstr = sprintf("%s %d %s %d %s 0x%x", servername, xid, progname,
+ argstr = sprintf("%s %d %s %d %s %d", servername, xid, progname,
vers, procname, flags)
}
@@ -345,7 +346,7 @@ probe sunrpc.clnt.call_async = kernel.function("rpc_call_async") ?,
flags = $flags
name = "sunrpc.clnt.call_async"
- argstr = sprintf("%s %d %s %d %s 0x%x", servername, xid, progname,
+ argstr = sprintf("%s %d %s %d %s %d", servername, xid, progname,
vers, procname, flags)
}
@@ -946,13 +947,21 @@ function port_from_clnt:long(clnt:long)
function clones_from_clnt:long(clnt:long)
%{ /* pure */
struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,22)
THIS->__retvalue = atomic_read(&clnt->cl_count); /* FIXME: deref hazard! */
+#else
+ THIS->__retvalue = -1;
+#endif
%}
function tasks_from_clnt:long(clnt:long)
%{ /* pure */
struct rpc_clnt *clnt = (struct rpc_clnt *)(long)THIS->clnt;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,22)
THIS->__retvalue = atomic_read(&clnt->cl_users); /* FIXME: deref hazard! */
+#else
+ THIS->__retvalue = -1;
+#endif
%}
function proc_from_msg:long(msg:long)
diff --git a/tapset/socket.stp b/tapset/socket.stp
index fc532b1d..e18d99ee 100644
--- a/tapset/socket.stp
+++ b/tapset/socket.stp
@@ -219,7 +219,11 @@ probe socket.aio_write = kernel.function ("sock_aio_write")
{
name = "socket.aio_write"
_sock = _get_sock_addr ($iocb->ki_filp)
+%( kernel_v < "2.6.19" %?
+ size = $count
+%:
size = _get_sock_size ($iov, $nr_segs)
+%)
protocol = _sock_prot_num (_sock)
family = _sock_fam_num (_sock)
state = _sock_state_num (_sock)
@@ -282,7 +286,11 @@ probe socket.aio_read = kernel.function ("sock_aio_read")
{
name = "socket.aio_read"
_sock = _get_sock_addr ($iocb->ki_filp)
- size = _get_sock_size ($iov, $nr_segs)
+%( kernel_v < "2.6.19" %?
+ size = $count
+%:
+ size = _get_sock_size ($iov, $nr_segs)
+%)
protocol = _sock_prot_num (_sock)
family = _sock_fam_num (_sock)
state = _sock_state_num (_sock)
diff --git a/tapset/tcp.stp b/tapset/tcp.stp
index 1357e587..55f5391d 100644
--- a/tapset/tcp.stp
+++ b/tapset/tcp.stp
@@ -137,7 +137,8 @@ probe tcp.sendmsg = kernel.function("tcp_sendmsg") {
// The process which sends a tcp message
//
// Arguments:
-// size - number of bytes sent
+// size - number of bytes sent or
+// error code if an error occurred.
//
probe tcp.sendmsg.return = kernel.function("tcp_sendmsg").return {
size = $return
@@ -167,7 +168,8 @@ probe tcp.recvmsg = kernel.function("tcp_recvmsg") {
// The process which receives a tcp message
//
// Arguments:
-// size - number of bytes received
+// size - number of bytes received or
+// error code if an error occurred.
//
probe tcp.recvmsg.return = kernel.function("tcp_recvmsg").return {
size = $return
diff --git a/tapset/vfs.stp b/tapset/vfs.stp
index f4217703..75b1b279 100644
--- a/tapset/vfs.stp
+++ b/tapset/vfs.stp
@@ -31,7 +31,7 @@ function __bdevname:string (bdev:long) %{ /* pure */
/* XXX: Is this hashing really that helpful? The call to bdevname()
* isn't very involved... */
global __devnames
-function __find_bdevname(dev, bdev)
+function __find_bdevname:string(dev:long, bdev:long)
{
# return ""
@@ -89,6 +89,12 @@ function __page_bdev:long (page:long) %{ /* pure */
CATCH_DEREF_FAULT();
%}
+function __page_index:long (page:long) %{ /* pure */
+ struct page *page = (struct page *)(long)THIS->page;
+ THIS->__retvalue = (long)kread(&(page->index));
+ CATCH_DEREF_FAULT();
+%}
+
function __file_dev:long (file:long) %{ /* pure */
struct file *file = (struct file *)(long)THIS->file;
struct dentry *dentry = file? kread(&(file->f_dentry)) : NULL;
@@ -329,6 +335,7 @@ probe generic.fop.open.return = kernel.function ("generic_file_open").return
retstr = sprintf("%d", $return)
}
+%( kernel_v < "2.6.23" %?
probe generic.fop.sendfile = kernel.function ("generic_file_sendfile")
{
dev = __file_dev($in_file)
@@ -354,6 +361,7 @@ probe generic.fop.sendfile.return = kernel.function ("generic_file_sendfile").re
units = "bytes"
}
}
+%)
probe generic.fop.splice_read = kernel.function ("generic_file_splice_read") ?
{
@@ -538,7 +546,7 @@ probe vfs.block_sync_page = kernel.function ("block_sync_page")
devname = __find_bdevname(dev, __page_bdev(__page))
ino = __page_ino(__page)
- page_index = $page->index
+ page_index = __page_index(__page)
name = "block_sync_page"
argstr = sprintf("%d", page_index)
@@ -554,11 +562,12 @@ probe vfs.block_sync_page.return = kernel.function ("block_sync_page").return
probe vfs.buffer_migrate_page = kernel.function ("buffer_migrate_page")?
{
- dev = __page_dev($page)
- ino = __page_ino($page)
- devname = __find_bdevname(dev,__page_bdev($page))
+ __page = $page
+ dev = __page_dev(__page)
+ ino = __page_ino(__page)
+ devname = __find_bdevname(dev,__page_bdev(__page))
- page_index = $page->index
+ page_index = __page_index(__page)
name = "buffer_migrate_page"
argstr = sprintf("%d", page_index)
@@ -585,7 +594,7 @@ probe vfs.__set_page_dirty_buffers = kernel.function ("__set_page_dirty_buffers"
devname = __find_bdevname(dev, __page_bdev(__page))
ino = __page_ino(__page)
- index = $page->index
+ index = __page_index(__page)
name = "__set_page_dirty_buffers"
argstr = sprintf("%d", page_index)
@@ -616,7 +625,7 @@ probe vfs.do_mpage_readpage = kernel.function ("do_mpage_readpage")
devname = __find_bdevname(dev, __page_bdev(__page))
ino = __page_ino(__page)
- index = $page->index
+ index = __page_index(__page)
name = "do_mpage_readpage"
argstr = sprintf("%d", index)
@@ -658,11 +667,12 @@ probe vfs.add_to_page_cache.return = kernel.function ("add_to_page_cache").retur
probe vfs.remove_from_page_cache = kernel.function ("__remove_from_page_cache")
{
- dev = __page_dev($page)
- devname = __find_bdevname(dev, __page_bdev($page))
- ino = __page_ino($page)
+ __page = $page
+ dev = __page_dev(__page)
+ devname = __find_bdevname(dev, __page_bdev(__page))
+ ino = __page_ino(__page)
- index = $page->index
+ index = __page_index(__page)
name = "vfs.remove_from_page_cache"
argstr = sprintf("%d", ino)