[patch] remove gendisk->stamp_idle field
authorChen, Kenneth W <kenneth.w.chen@intel.com>
Thu, 13 Oct 2005 19:48:42 +0000 (21:48 +0200)
committerJens Axboe <axboe@nelson.home.kernel.dk>
Fri, 28 Oct 2005 06:15:30 +0000 (08:15 +0200)
struct gendisk has these two fields: stamp, stamp_idle.  Update to
stamp_idle is always in sync with stamp and they are always the same.
Therefore, it does not add any value in having two fields tracking
same timestamp.  Suggest to remove it.

Also, we should only update gendisk stats with non-zero value.
Advantage is that we don't have to needlessly calculate memory address,
and then add zero to the content.

Signed-off-by: Ken Chen <kenneth.w.chen@intel.com>
Signed-off-by: Jens Axboe <axboe@suse.de>
drivers/block/ll_rw_blk.c
fs/partitions/check.c
include/linux/genhd.h

index baedac522945a45ca7c886de93c6f1f9d6739765..c42071fd2e955397478ffd9c8d2131827601b39b 100644 (file)
@@ -2433,13 +2433,12 @@ void disk_round_stats(struct gendisk *disk)
 {
        unsigned long now = jiffies;
 
-       __disk_stat_add(disk, time_in_queue,
-                       disk->in_flight * (now - disk->stamp));
+       if (disk->in_flight) {
+               __disk_stat_add(disk, time_in_queue,
+                               disk->in_flight * (now - disk->stamp));
+               __disk_stat_add(disk, io_ticks, (now - disk->stamp));
+       }
        disk->stamp = now;
-
-       if (disk->in_flight)
-               __disk_stat_add(disk, io_ticks, (now - disk->stamp_idle));
-       disk->stamp_idle = now;
 }
 
 /*
index 77e178f13162abef0305852554dbfa73d2a99ff0..1e848648a322b158cce120d70c36966349f10cff 100644 (file)
@@ -430,7 +430,7 @@ void del_gendisk(struct gendisk *disk)
        disk->flags &= ~GENHD_FL_UP;
        unlink_gendisk(disk);
        disk_stat_set_all(disk, 0);
-       disk->stamp = disk->stamp_idle = 0;
+       disk->stamp = 0;
 
        devfs_remove_disk(disk);
 
index 01796c41c951619f6afb9e7b3132ea28aec81b86..142e1c1e06899423948cb1e71d8db34cb33dc437 100644 (file)
@@ -119,7 +119,7 @@ struct gendisk {
        int policy;
 
        atomic_t sync_io;               /* RAID */
-       unsigned long stamp, stamp_idle;
+       unsigned long stamp;
        int in_flight;
 #ifdef CONFIG_SMP
        struct disk_stats *dkstats;