From 11115992b51dfddba44781ed336d2831224e733e Mon Sep 17 00:00:00 2001 From: mmason Date: Wed, 26 Sep 2007 19:03:54 +0000 Subject: 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. --- tapset/vfs.stp | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'tapset') 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) -- cgit From 930f61d116d0c37a2eca4d8d3232b439c9f80101 Mon Sep 17 00:00:00 2001 From: mmason Date: Wed, 26 Sep 2007 19:09:23 +0000 Subject: Updated vfs.stp. --- tapset/ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'tapset') diff --git a/tapset/ChangeLog b/tapset/ChangeLog index e313629f..830e949c 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,16 @@ +2007-09-26 Mike Mason + + * 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 From Lai Jiangshan -- cgit From 58a81479785f10c9717997ba1a374125f3da7103 Mon Sep 17 00:00:00 2001 From: zhaolei Date: Thu, 27 Sep 2007 01:42:46 +0000 Subject: 2007-09-27 Zhaolei * socket.stp (aio_read): Fix compile error with kernel version less than 2.6.19. * socket.stp (aio_write): Ditto. --- tapset/ChangeLog | 6 ++++++ tapset/socket.stp | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'tapset') diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 830e949c..a8e100c2 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,9 @@ +2007-09-27 Zhaolei + + * 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 * vfs.stp: 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) -- cgit From 6c5a7bf85ea4dd12c4481db1c82663354c42f2cc Mon Sep 17 00:00:00 2001 From: zhaolei Date: Thu, 27 Sep 2007 05:14:15 +0000 Subject: 2007-09-27 Zhaolei * tcp.stp (sendmsg.return): Fix description of size variable. * tcp.stp (recvmsg.return): Ditto. --- tapset/ChangeLog | 5 +++++ tapset/tcp.stp | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'tapset') diff --git a/tapset/ChangeLog b/tapset/ChangeLog index a8e100c2..22f0d063 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,8 @@ +2007-09-27 Zhaolei + + * tcp.stp (sendmsg.return): Fix description of size variable. + * tcp.stp (recvmsg.return): Ditto. + 2007-09-27 Zhaolei * socket.stp (aio_read): Fix compile error with kernel version 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 -- cgit From 1a36448f951098bd36ed5264cd6de6afcb3ce0f7 Mon Sep 17 00:00:00 2001 From: zhaolei Date: Thu, 27 Sep 2007 07:11:32 +0000 Subject: 2007-09-27 Zhaolei From Cai Fei * 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. --- tapset/ChangeLog | 7 +++++++ tapset/rpc.stp | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'tapset') diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 22f0d063..9284e11d 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,10 @@ +2007-09-27 Zhaolei + + From Cai Fei + * 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 * tcp.stp (sendmsg.return): Fix description of size variable. diff --git a/tapset/rpc.stp b/tapset/rpc.stp index 480c67c3..6daa7f63 100644 --- a/tapset/rpc.stp +++ b/tapset/rpc.stp @@ -299,7 +299,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 +345,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) } -- cgit From a4cf1b4431dc0402f1e6daf0708a34f31edbee57 Mon Sep 17 00:00:00 2001 From: zhaolei Date: Thu, 27 Sep 2007 07:24:47 +0000 Subject: 2007-09-27 Zhaolei From Cai Fei * 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. --- tapset/ChangeLog | 7 +++++++ tapset/rpc.stp | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'tapset') diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 9284e11d..88f4985e 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,10 @@ +2007-09-27 Zhaolei + + From Cai Fei + * 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 From Cai Fei diff --git a/tapset/rpc.stp b/tapset/rpc.stp index 6daa7f63..a5740a21 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 = -- cgit From 5e4c160908b88e1272ec09f2c88d7612ce82b7c8 Mon Sep 17 00:00:00 2001 From: wenji Date: Thu, 27 Sep 2007 09:11:34 +0000 Subject: 2007-09-27 Wenji Huang * 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. --- tapset/ChangeLog | 6 ++++++ tapset/nfs.stp | 4 ++++ tapset/nfs_proc.stp | 3 ++- tapset/rpc.stp | 8 ++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) (limited to 'tapset') diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 88f4985e..65abd7d5 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,9 @@ +2007-09-27 Wenji Huang + + * 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 From Cai Fei 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 a5740a21..3d17d221 100644 --- a/tapset/rpc.stp +++ b/tapset/rpc.stp @@ -947,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) -- cgit