Thread (7 messages) 7 messages, 3 authors, 2024-04-10

Re: [PATCH v4 2/2] md: don't account sync_io if iostats of the disk is disabled

From: Yu Kuai <hidden>
Date: 2024-01-17 09:35:13
Also in: linux-block, lkml

在 2024/01/17 11:19, linan666@huaweicloud.com 写道:
From: Li Nan <redacted>

If iostats is disabled, disk_stats will not be updated and
part_stat_read_accum() only returns a constant value. In this case,
continuing to count sync_io and to check is_mddev_idle() is no longer
meaningful.
LGTM
Reviewed-by: Yu Kuai <redacted>
quoted hunk ↗ jump to hunk
Signed-off-by: Li Nan <redacted>
---
  drivers/md/md.h | 3 ++-
  drivers/md/md.c | 4 ++++
  2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 1a4f976951c1..e2d03a7a858c 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -584,7 +584,8 @@ extern void mddev_unlock(struct mddev *mddev);
  
  static inline void md_sync_acct(struct block_device *bdev, unsigned long nr_sectors)
  {
-	atomic64_add(nr_sectors, &bdev->bd_disk->sync_io);
+	if (blk_queue_io_stat(bdev->bd_disk->queue))
+		atomic64_add(nr_sectors, &bdev->bd_disk->sync_io);
  }
  
  static inline void md_sync_acct_bio(struct bio *bio, unsigned long nr_sectors)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index a6829ea5b560..919d6affc0ac 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -8502,6 +8502,10 @@ static int is_mddev_idle(struct mddev *mddev, int init)
  	rcu_read_lock();
  	rdev_for_each_rcu(rdev, mddev) {
  		struct gendisk *disk = rdev->bdev->bd_disk;
+
+		if (!init && !blk_queue_io_stat(disk->queue))
+			continue;
+
  		curr_events =
  			(long long)part_stat_read_accum(disk->part0, sectors) -
  			atomic64_read(&disk->sync_io);
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help