From d4b35e96eab28e96353b53954111662cf76ced2d Mon Sep 17 00:00:00 2001 From: David Smith Date: Tue, 28 Oct 2008 14:34:28 -0500 Subject: PR6972. Fixed vfs tapset. 2008-10-28 David Smith 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 * buildok/vfs_testcase.stp: Fixes for updated vfs tapset. --- tapset/ChangeLog | 12 ++++++++++++ tapset/vfs.stp | 30 +++++++++++++++++++++--------- 2 files changed, 33 insertions(+), 9 deletions(-) (limited to 'tapset') 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 + + 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 * 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 +%} /* 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 } +%) -- cgit