Hi,

在 2025/04/28 22:06, John Garry 写道:
On 27/04/2025 09:29, Yu Kuai wrote:
From: Yu Kuai <yuku...@huawei.com>

Which means there is a BUG

nit: to me, BUG means symbol BUG(), and not a software bug (which I think that you mean)

Actually, I mean the bio-based disk driver or blk-mq messed up the IO
accounting, IO done is more than IO start, and this is a bug.

for related bio-based disk driver, or blk-mq
for rq-based disk, it's better not to hide the BUG.

AFICS, this check was not present for mq, so is it really required now? I suppose that the code is simpler to always have the check. I find it an odd check to begin with...

This check do present for mq, for example, diskstats_show() and
update_io_ticks().

Thanks,
Kuai



Signed-off-by: Yu Kuai <yuku...@huawei.com>
---
  block/genhd.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/block/genhd.c b/block/genhd.c
index f671d9ee00c4..d158c25237b6 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -136,9 +136,9 @@ static void part_in_flight_rw(struct block_device *part,           inflight[0] += part_stat_local_read_cpu(part, in_flight[0], cpu);           inflight[1] += part_stat_local_read_cpu(part, in_flight[1], cpu);
      }
-    if ((int)inflight[0] < 0)
+    if (WARN_ON_ONCE((int)inflight[0] < 0))
          inflight[0] = 0;
-    if ((int)inflight[1] < 0)
+    if (WARN_ON_ONCE((int)inflight[1] < 0))
          inflight[1] = 0;
  }


.



Reply via email to