diff options
-rw-r--r-- | tapset/ChangeLog | 44 | ||||
-rw-r--r-- | tapset/nfs.stp | 4 | ||||
-rw-r--r-- | tapset/nfs_proc.stp | 3 | ||||
-rw-r--r-- | tapset/rpc.stp | 17 | ||||
-rw-r--r-- | tapset/socket.stp | 10 | ||||
-rw-r--r-- | tapset/tcp.stp | 6 | ||||
-rw-r--r-- | tapset/vfs.stp | 34 |
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) |