diff --git a/block/bio.c b/block/bio.c index b5bbc023d64d96742f79720ca491f83aa8ab87d4..48092fe0c1164e5ae94cf14d351c81f83a30f880 100644 --- a/block/bio.c +++ b/block/bio.c @@ -1689,7 +1689,10 @@ void generic_start_io_acct(struct request_queue *q, int op, const int sgrp = op_stat_group(op); int cpu = part_stat_lock(); - part_round_stats(q, cpu, part); + if (precise_iostat) + part_round_stats(q, cpu, part); + else + update_io_ticks(cpu, part, jiffies, false); part_stat_inc(cpu, part, ios[sgrp]); part_stat_add(cpu, part, sectors[sgrp], sectors); part_inc_in_flight(q, part, op_is_write(op)); diff --git a/block/blk-core.c b/block/blk-core.c index 5892c532ae5b754302a82eba4e97a03635283168..219aee53a1be4a7dd33a3178f9805e4208c5cca2 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -2864,7 +2864,10 @@ void blk_account_io_start(struct request *rq, bool new_io) part_stat_inc(cpu, part, merges[rw]); } else { part = disk_map_sector_rcu(rq->rq_disk, blk_rq_pos(rq)); - part_round_stats(rq->q, cpu, part); + if (!precise_iostat) + update_io_ticks(cpu, part, jiffies, false); + else + part_round_stats(rq->q, cpu, part); part_inc_in_flight(rq->q, part, rw); rq->part = part; }