diff mbox series

[4/4] block: call blk_additional_{latency,sector} only when io_extra_stats is true

Message ID 20210127145930.8826-5-guoqing.jiang@cloud.ionos.com (mailing list archive)
State New, archived
Headers show
Series block: add two statistic tables | expand

Commit Message

Guoqing Jiang Jan. 27, 2021, 2:59 p.m. UTC
If ADDITIONAL_DISKSTAT is enabled carelessly, then it is bad to people
who don't want the additional overhead.

Now add check before call blk_additional_{latency,sector}, which guarntee
only those who really know about the attribute can account the additional
data.

Reviewed-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Signed-off-by: Guoqing Jiang <guoqing.jiang@cloud.ionos.com>
---
 block/blk-core.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Christoph Hellwig Jan. 27, 2021, 5:09 p.m. UTC | #1
On Wed, Jan 27, 2021 at 03:59:30PM +0100, Guoqing Jiang wrote:
> +		if (blk_queue_io_extra_stat(req->q))
> +			blk_additional_sector(req->part, sgrp, bytes >> SECTOR_SHIFT);

This is completely unreadable due to the long line.
Guoqing Jiang Jan. 28, 2021, 2:53 a.m. UTC | #2
Hi Christoph,

On 1/27/21 18:09, Christoph Hellwig wrote:
> On Wed, Jan 27, 2021 at 03:59:30PM +0100, Guoqing Jiang wrote:
>> +		if (blk_queue_io_extra_stat(req->q))
>> +			blk_additional_sector(req->part, sgrp, bytes >> SECTOR_SHIFT);
> 
> This is completely unreadable due to the long line.
> 

Hmm, then how about move the check into blk_additional_{sector,latency}
to make the code more readable.

Thanks,
Guoqing
diff mbox series

Patch

diff --git a/block/blk-core.c b/block/blk-core.c
index 4271c5a8e685..f62cfc8f801e 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1313,7 +1313,8 @@  static void blk_account_io_completion(struct request *req, unsigned int bytes)
 		const int sgrp = op_stat_group(req_op(req));
 
 		part_stat_lock();
-		blk_additional_sector(req->part, sgrp, bytes >> SECTOR_SHIFT);
+		if (blk_queue_io_extra_stat(req->q))
+			blk_additional_sector(req->part, sgrp, bytes >> SECTOR_SHIFT);
 		part_stat_add(req->part, sectors[sgrp], bytes >> 9);
 		part_stat_unlock();
 	}
@@ -1332,7 +1333,8 @@  void blk_account_io_done(struct request *req, u64 now)
 
 		part_stat_lock();
 		update_io_ticks(req->part, jiffies, true);
-		blk_additional_latency(req->part, sgrp, req, 0);
+		if (blk_queue_io_extra_stat(req->q))
+			blk_additional_latency(req->part, sgrp, req, 0);
 		part_stat_inc(req->part, ios[sgrp]);
 		part_stat_add(req->part, nsecs[sgrp], now - req->start_time_ns);
 		part_stat_unlock();
@@ -1365,7 +1367,8 @@  static unsigned long __part_start_io_acct(struct block_device *part,
 	update_io_ticks(part, now, false);
 	part_stat_inc(part, ios[sgrp]);
 	part_stat_add(part, sectors[sgrp], sectors);
-	blk_additional_sector(part, sgrp, sectors);
+	if (blk_queue_io_extra_stat(part->bd_disk->queue))
+		blk_additional_sector(part, sgrp, sectors);
 	part_stat_local_inc(part, in_flight[op_is_write(op)]);
 	part_stat_unlock();
 
@@ -1400,7 +1403,8 @@  static void __part_end_io_acct(struct block_device *part, unsigned int op,
 
 	part_stat_lock();
 	update_io_ticks(part, now, true);
-	blk_additional_latency(part, sgrp, NULL, start_time);
+	if (blk_queue_io_extra_stat(part->bd_disk->queue))
+		blk_additional_latency(part, sgrp, NULL, start_time);
 	part_stat_add(part, nsecs[sgrp], jiffies_to_nsecs(duration));
 	part_stat_local_dec(part, in_flight[op_is_write(op)]);
 	part_stat_unlock();