On 4/10/25 7:00 PM, Ming Lei wrote: > @@ -5081,7 +5087,18 @@ static void __blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, > void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues) > { > mutex_lock(&set->tag_list_lock); > + /* > + * Mark us in updating nr_hw_queues for preventing switching > + * elevator > + * > + * Elevator switch code can _not_ acquire ->tag_list_lock > + */ > + set->flags |= BLK_MQ_F_UPDATE_HW_QUEUES; > + synchronize_srcu(&set->update_nr_hwq_srcu); > + > __blk_mq_update_nr_hw_queues(set, nr_hw_queues); > + > + set->flags &= BLK_MQ_F_UPDATE_HW_QUEUES; I think here we want to clear BLK_MQ_F_UPDATE_HW_QUEUES, so we need to have set->flags updated as below: set->flags &= ~BLK_MQ_F_UPDATE_HW_QUEUES; Thanks, --Nilay