block: Seperate read and write statistics of in_flight requests v2
authorNikanth Karthikesan <knikanth@suse.de>
Tue, 6 Oct 2009 18:16:55 +0000 (20:16 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Tue, 6 Oct 2009 18:16:55 +0000 (20:16 +0200)
commit316d315bffa4026f28085f6b24ebcebede370ac7
tree10b6b057fec2382536371d2e14f9d4c0d6cf9eea
parent23e018a1b083ecb4b8bb2fb43d58e7c19b5d7959
block: Seperate read and write statistics of in_flight requests v2

Commit a9327cac440be4d8333bba975cbbf76045096275 added seperate read
and write statistics of in_flight requests. And exported the number
of read and write requests in progress seperately through sysfs.

But  Corrado Zoccolo <czoccolo@gmail.com> reported getting strange
output from "iostat -kx 2". Global values for service time and
utilization were garbage. For interval values, utilization was always
100%, and service time is higher than normal.

So this was reverted by commit 0f78ab9899e9d6acb09d5465def618704255963b

The problem was in part_round_stats_single(), I missed the following:
        if (now == part->stamp)
                return;

-       if (part->in_flight) {
+       if (part_in_flight(part)) {
                __part_stat_add(cpu, part, time_in_queue,
                                part_in_flight(part) * (now - part->stamp));
                __part_stat_add(cpu, part, io_ticks, (now - part->stamp));

With this chunk included, the reported regression gets fixed.

Signed-off-by: Nikanth Karthikesan <knikanth@suse.de>
--
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/blk-core.c
block/blk-merge.c
block/genhd.c
drivers/md/dm.c
fs/partitions/check.c
include/linux/genhd.h