> > void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues) Are you sure this patch is sufficient? What prevents that blk_mq_run_hw_queues() gets called after the blk_mq_quiesce() and blk_sync_queue() calls have finished and before the queue is unfrozen?
@@ -595,6 +595,12 @@ struct Scsi_Host { * is nr_hw_queues * can_queue. */ unsigned nr_hw_queues; + + /* + * Number of reserved commands, if any. + */ nit: I would write, "Number of commands to reserve, if any" + unsigned nr_reserved_cmds; + unsigned active_mode:2;...
> void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues) >