Include total io stats. variable 'i' should be an 'unsigned long long' in dev64. --- diff/drivers/md/dm-iostats.c 2002-12-17 16:30:09.000000000 +0000 +++ source/drivers/md/dm-iostats.c 2002-12-17 16:35:33.000000000 +0000 @@ -22,6 +22,7 @@ unsigned long flags; struct dm_dev *dev; unsigned long long ios[2]; + unsigned long long totals[2]; /* * These fields are only present if we are recording the @@ -106,6 +107,8 @@ spin_lock_irqsave(&ic->lock, flags); ic->ios[rw]++; + ic->totals[rw] += (bh->b_size >> 9); + if (test_bit(IOF_LATENCY, &ic->flags)) ic->start[rw] += jiffies; @@ -138,7 +141,7 @@ static void div64(unsigned long long a, unsigned long long b, unsigned long long *n) { - unsigned int i; + unsigned long long i; unsigned long long acc, prev; *n = 0; @@ -182,14 +185,16 @@ switch (type) { case STATUSTYPE_INFO: if (!test_bit(IOF_LATENCY, &ic->flags)) { - snprintf(result, maxlen, "%s %Lu %Lu", + snprintf(result, maxlen, "%s %Lu %Lu %Lu %Lu", kdevname(to_kdev_t(ic->dev->bdev->bd_dev)), - ic->ios[0], ic->ios[1]); + ic->ios[0], ic->ios[1], + ic->totals[0], ic->totals[1]); } else { - snprintf(result, maxlen, "%s %Lu %Lu %lu %lu", + snprintf(result, maxlen, "%s %Lu %Lu %Lu %Lu %lu %lu", kdevname(to_kdev_t(ic->dev->bdev->bd_dev)), ic->ios[0], ic->ios[1], + ic->totals[0], ic->totals[1], calc_latency(ic, 0), calc_latency(ic, 1)); } break;