summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWenji Huang <wenji.huang@oracle.com>2009-09-11 13:38:47 +0800
committerWenji Huang <wenji.huang@oracle.com>2009-09-11 13:38:47 +0800
commit2f960e8ddd0fd7305cf95712f3f0c05e1c585f4e (patch)
treec0082d0b0c2477ad025dcd1b4d01b83b0e332bce
parent30c64675b8d77b4dbcd8a5aa6fc90610fef8df00 (diff)
downloadsystemtap-steved-2f960e8ddd0fd7305cf95712f3f0c05e1c585f4e.tar.gz
systemtap-steved-2f960e8ddd0fd7305cf95712f3f0c05e1c585f4e.tar.xz
systemtap-steved-2f960e8ddd0fd7305cf95712f3f0c05e1c585f4e.zip
PR10618: update iostat-scsi.stp for 2.6.31
* testsuite/systemtap.examples/io/iostat-scsi.stp: Add pure function. * testsuite/systemtap.examples/io/iostat-scsi.meta: Add -g option.
-rw-r--r--testsuite/systemtap.examples/io/iostat-scsi.meta4
-rwxr-xr-xtestsuite/systemtap.examples/io/iostat-scsi.stp16
2 files changed, 17 insertions, 3 deletions
diff --git a/testsuite/systemtap.examples/io/iostat-scsi.meta b/testsuite/systemtap.examples/io/iostat-scsi.meta
index 242e740e..3326f532 100644
--- a/testsuite/systemtap.examples/io/iostat-scsi.meta
+++ b/testsuite/systemtap.examples/io/iostat-scsi.meta
@@ -10,5 +10,5 @@ output: timed
scope: system-wide
description: The iostat-scsi.stp script provides a breakdown of the number of blks read and written on the various machines's SCSI devices. The script takes one argument which is the number of seconds between reports.
test_support: stap -l module("st").function("st_do_scsi")!,kernel.function("st_do_scsi")
-test_check: stap -p4 iostat-scsi.stp 1
-test_installcheck: stap iostat-scsi.stp 1 -c "sleep 1"
+test_check: stap -g -p4 iostat-scsi.stp 1
+test_installcheck: stap -g iostat-scsi.stp 1 -c "sleep 1"
diff --git a/testsuite/systemtap.examples/io/iostat-scsi.stp b/testsuite/systemtap.examples/io/iostat-scsi.stp
index 8251741d..f6715a42 100755
--- a/testsuite/systemtap.examples/io/iostat-scsi.stp
+++ b/testsuite/systemtap.examples/io/iostat-scsi.stp
@@ -20,14 +20,28 @@ probe module("sd_mod").function("sd_init_command") !, kernel.function("sd_init_c
}
%:
-function get_sector_size:long (data:long) { /* pure */
+function get_sector_size:long (data:long) {
return @cast(data, "scsi_device", "kernel<scsi/scsi_device.h>")->sector_size
}
+%(kernel_v>="2.6.31" %?
+%{
+#include <linux/blkdev.h>
+%}
+
+function get_nr_sectors:long(rq:long) %{ /* pure */
+ THIS->__retvalue = blk_rq_sectors((const struct request *)(long)THIS->rq);
+%}
+%)
+
probe module("sd_mod").function("sd_prep_fn") !, kernel.function("sd_prep_fn") {
device=kernel_string($rq->rq_disk->disk_name)
sector_size=get_sector_size($q->queuedata)
+%(kernel_v>="2.6.31" %?
+ nr_sectors=get_nr_sectors($rq)
+%:
nr_sectors=$rq->nr_sectors
+%)
devices[device] = 1
if ($rq->cmd_flags & 1)
writes[device] <<< nr_sectors * sector_size