struct disk_stats stat;
        unsigned int inflight;
 
-       part_stat_read_all(bdev, &stat);
        if (queue_is_mq(q))
                inflight = blk_mq_in_flight(q, bdev);
        else
                inflight = part_in_flight(bdev);
 
+       if (inflight) {
+               part_stat_lock();
+               update_io_ticks(bdev, jiffies, true);
+               part_stat_unlock();
+       }
+       part_stat_read_all(bdev, &stat);
        return sprintf(buf,
                "%8lu %8lu %8llu %8u "
                "%8lu %8lu %8llu %8u "
        xa_for_each(&gp->part_tbl, idx, hd) {
                if (bdev_is_partition(hd) && !bdev_nr_sectors(hd))
                        continue;
-               part_stat_read_all(hd, &stat);
                if (queue_is_mq(gp->queue))
                        inflight = blk_mq_in_flight(gp->queue, hd);
                else
                        inflight = part_in_flight(hd);
 
+               if (inflight) {
+                       part_stat_lock();
+                       update_io_ticks(hd, jiffies, true);
+                       part_stat_unlock();
+               }
+               part_stat_read_all(hd, &stat);
                seq_printf(seqf, "%4d %7d %pg "
                           "%lu %lu %lu %u "
                           "%lu %lu %lu %u "