diff options
author | David Smith <dsmith@redhat.com> | 2008-10-28 14:34:28 -0500 |
---|---|---|
committer | David Smith <dsmith@redhat.com> | 2008-10-28 14:34:28 -0500 |
commit | d4b35e96eab28e96353b53954111662cf76ced2d (patch) | |
tree | 83b277fa966932e9b30284f846329790c8cce92e | |
parent | 2f6db74ede1d91c5db9c08c6f0dd1056a6992817 (diff) | |
download | systemtap-steved-d4b35e96eab28e96353b53954111662cf76ced2d.tar.gz systemtap-steved-d4b35e96eab28e96353b53954111662cf76ced2d.tar.xz systemtap-steved-d4b35e96eab28e96353b53954111662cf76ced2d.zip |
PR6972. Fixed vfs tapset.
2008-10-28 David Smith <dsmith@redhat.com>
PR6972
* vfs.stp (generic.fop.aio_read): Works under 2.6.18 kernels, such
as RHEL5.
(generic.fop.aio_read.return): Ditto.
(vfs.__set_page_dirty_buffers): Fixed small bug.
(_vfs.block_write_begin): Only use for kernels >= 2.6.24.
(_vfs.block_write_begin.return): Ditto.
(_vfs.block_write_end): Ditto.
(_vfs.block_write_end.return): Ditto.
2008-10-28 David Smith <dsmith@redhat.com>
* buildok/vfs_testcase.stp: Fixes for updated vfs tapset.
-rw-r--r-- | tapset/ChangeLog | 12 | ||||
-rw-r--r-- | tapset/vfs.stp | 30 | ||||
-rw-r--r-- | testsuite/ChangeLog | 4 | ||||
-rwxr-xr-x | testsuite/buildok/vfs_testcase.stp | 7 |
4 files changed, 40 insertions, 13 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog index 20f9e4ff..06681347 100644 --- a/tapset/ChangeLog +++ b/tapset/ChangeLog @@ -1,3 +1,15 @@ +2008-10-28 David Smith <dsmith@redhat.com> + + PR6972 + * vfs.stp (generic.fop.aio_read): Works under 2.6.18 kernels, such + as RHEL5. + (generic.fop.aio_read.return): Ditto. + (vfs.__set_page_dirty_buffers): Fixed small bug. + (_vfs.block_write_begin): Only use for kernels >= 2.6.24. + (_vfs.block_write_begin.return): Ditto. + (_vfs.block_write_end): Ditto. + (_vfs.block_write_end.return): Ditto. + 2008-10-28 Wenji Huang <wenji.huang@oracle.com> * ioblock.stp (ioblock.request, ioblock.end): Correct for 2.6.28. diff --git a/tapset/vfs.stp b/tapset/vfs.stp index 2ac8256a..f43e499a 100644 --- a/tapset/vfs.stp +++ b/tapset/vfs.stp @@ -2,11 +2,17 @@ // Copyright (C) 2006-2007 IBM Corp. // Copyright (C) 2007 Intel Corporation. // Copyright (C) 2007 Bull S.A.S +// Copyright (c) 2008 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. + +%{ +// Needed for struct iovec. +#include <linux/uio.h> +%} /* generic vfs probes */ @@ -225,29 +231,32 @@ probe generic.fop.llseek.return = kernel.function ("generic_file_llseek").return error_str = error ? errno_str(error) : "" } -probe generic.fop.aio_read = kernel.function ("generic_file_aio_read") +probe generic.fop.aio_read = + kernel.function("__generic_file_aio_read") !, + kernel.function("generic_file_aio_read") { file = $iocb->ki_filp dev = __file_dev($iocb->ki_filp) devname = __find_bdevname(dev, __file_bdev($iocb->ki_filp)) ino = __file_ino($iocb->ki_filp) - - pos = $pos %( kernel_v >= "2.6.19" %? - count = __iov_length($iov,$nr_segs,1,1) /*FIX ME: should be VERIFY_WRITE instead of 1*/ - buf = $iov->iov_base + pos = $pos %: - buf = $buf - count = $count + pos = ppos_pos($ppos) %) + buf = $iov->iov_base + count = __iov_length($iov,$nr_segs,1,1) /*FIX ME: should be VERIFY_WRITE instead of 1*/ name = "generic_file_aio_read" argstr = sprintf("%d, %d, %p", count, pos,buf) size = count units = "bytes" } -probe generic.fop.aio_read.return = kernel.function ("generic_file_aio_read").return + +probe generic.fop.aio_read.return = + kernel.function("__generic_file_aio_read").return !, + kernel.function("generic_file_aio_read").return { file = $iocb->ki_filp nr_segs = $nr_segs @@ -455,6 +464,7 @@ probe generic.fop.splice_read.return = kernel.function ("generic_file_splice_rea retstr = sprintf("%d", $return) file = $in ino = __file_ino($in) + _dev = __file_dev($in) dev_major = _dev_major(_dev) dev_minor = _dev_minor(_dev) @@ -699,7 +709,7 @@ probe vfs.__set_page_dirty_buffers = kernel.function ("__set_page_dirty_buffers" index = __page_index(__page) name = "__set_page_dirty_buffers" - argstr = sprintf("%d", page_index) + argstr = sprintf("%d", index) size = 1 units = "pages" @@ -944,6 +954,7 @@ probe _vfs.block_prepare_write.return = kernel.function("__block_prepare_write") error_str = error ? errno_str(error) : "" } +%( kernel_v >= "2.6.24" %? probe _vfs.block_write_begin = kernel.function ("block_write_begin") { file = $file @@ -986,3 +997,4 @@ probe _vfs.block_write_end.return = kernel.function ("block_write_end").return _inode = __address_inode($mapping) ret = $return } +%) diff --git a/testsuite/ChangeLog b/testsuite/ChangeLog index 9c82f35a..e27121ce 100644 --- a/testsuite/ChangeLog +++ b/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-10-28 David Smith <dsmith@redhat.com> + + * buildok/vfs_testcase.stp: Fixes for updated vfs tapset. + 2008-10-28 Wenji Huang <wenji.huang@oracle.com> * buildok/context_test.stp: Correct for 2.6.28. diff --git a/testsuite/buildok/vfs_testcase.stp b/testsuite/buildok/vfs_testcase.stp index 5d8dff25..54975819 100755 --- a/testsuite/buildok/vfs_testcase.stp +++ b/testsuite/buildok/vfs_testcase.stp @@ -126,11 +126,10 @@ probe generic.fop.sendfile { print("Probe hit the function: %s\n", name); print("Probe function argstr: %s\n", argstr); - print("file = %p\n", file); print("dev = %l\n", dev); print("devname = %s\n", devname); print("ino = %l\n", ino); - print("pos = %ll\n", pos); + print("ppos = %ll\n", ppos); print("size = %l\n", size); } @@ -180,7 +179,6 @@ probe generic.fop.read { print("Probe hit the function: %s\n", name); print("Probe function argstr: %s\n", argstr); - print("file = %p\n", file); print("dev = %l\n", dev); print("devname = %s\n", devname); print("ino = %l\n", ino); @@ -432,6 +430,7 @@ probe _vfs.block_prepare_write.return print("Probe return from function: %s with return value = %s\n", probefunc(), ret); } +%( kernel_v >= "2.6.24" %? probe _vfs.block_write_begin { print("Probe hit the function: %s\n", probefunc()); @@ -460,4 +459,4 @@ probe _vfs.block_write_end.return { print("Probe return from function: %s with return value = %s\n", probefunc(), ret); } - +%) |