|
@@ -216,9 +216,25 @@ static ssize_t part_stat_show(struct device *dev,
|
|
|
{
|
|
|
struct hd_struct *p = dev_to_part(dev);
|
|
|
|
|
|
- return sprintf(buf, "%8u %8llu %8u %8llu\n",
|
|
|
- p->ios[0], (unsigned long long)p->sectors[0],
|
|
|
- p->ios[1], (unsigned long long)p->sectors[1]);
|
|
|
+ preempt_disable();
|
|
|
+ part_round_stats(p);
|
|
|
+ preempt_enable();
|
|
|
+ return sprintf(buf,
|
|
|
+ "%8lu %8lu %8llu %8u "
|
|
|
+ "%8lu %8lu %8llu %8u "
|
|
|
+ "%8u %8u %8u"
|
|
|
+ "\n",
|
|
|
+ part_stat_read(p, ios[READ]),
|
|
|
+ part_stat_read(p, merges[READ]),
|
|
|
+ (unsigned long long)part_stat_read(p, sectors[READ]),
|
|
|
+ jiffies_to_msecs(part_stat_read(p, ticks[READ])),
|
|
|
+ part_stat_read(p, ios[WRITE]),
|
|
|
+ part_stat_read(p, merges[WRITE]),
|
|
|
+ (unsigned long long)part_stat_read(p, sectors[WRITE]),
|
|
|
+ jiffies_to_msecs(part_stat_read(p, ticks[WRITE])),
|
|
|
+ p->in_flight,
|
|
|
+ jiffies_to_msecs(part_stat_read(p, io_ticks)),
|
|
|
+ jiffies_to_msecs(part_stat_read(p, time_in_queue)));
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_FAIL_MAKE_REQUEST
|