From 2f960e8ddd0fd7305cf95712f3f0c05e1c585f4e Mon Sep 17 00:00:00 2001 From: Wenji Huang Date: Fri, 11 Sep 2009 13:38:47 +0800 Subject: [PATCH] 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. --- testsuite/systemtap.examples/io/iostat-scsi.meta | 4 ++-- testsuite/systemtap.examples/io/iostat-scsi.stp | 16 +++++++++++++++- 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 242e740e8..3326f5322 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 8251741df..f6715a42b 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")->sector_size } +%(kernel_v>="2.6.31" %? +%{ +#include +%} + +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 -- 2.43.5