On Fri, Aug 15, 2025 at 9:17 PM Ming Lei <ming.lei@xxxxxxxxxx> 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 <nilay@xxxxxxxxxxxxx> > Cc: Yu Kuai <yukuai3@xxxxxxxxxx> > Fixes: 5989bfe6ac6b ("block: restore two stage elevator switch while running nr_hw_queue update") > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > V2: > - fix the issue locally, so patch is simplified Hi Jens, Ping... Thanks,