Re: [PATCH V2] blk-mq: fix lockdep warning in __blk_mq_update_nr_hw_queues
From: Ming Lei <hidden>
Date: 2025-08-21 04:29:43
On Fri, Aug 15, 2025 at 9:17 PM Ming Lei [off-list ref] wrote:
Commit 5989bfe6ac6b ("block: restore two stage elevator switch while
running nr_hw_queue update") reintroduced a lockdep warning by calling
blk_mq_freeze_queue_nomemsave() before switching the I/O scheduler.
The function blk_mq_elv_switch_none() calls elevator_change_done().
Running this while the queue is frozen causes a lockdep warning.
Fix this by reordering the operations: first, switch the I/O scheduler
to 'none', and then freeze the queue. This ensures that elevator_change_done()
is not called on an already frozen queue. And this way is safe because
elevator_set_none() does freeze queue before switching to none.
Also we still have to rely on blk_mq_elv_switch_back() for switching
back, and it has to cover unfrozen queue case.
Cc: Nilay Shroff <redacted>
Cc: Yu Kuai <redacted>
Fixes: 5989bfe6ac6b ("block: restore two stage elevator switch while running nr_hw_queue update")
Signed-off-by: Ming Lei <redacted>
---
V2:
- fix the issue locally, so patch is simplifiedHi Jens, Ping... Thanks,