Description of problem: SCSI drivers that no longer want to support the legacy request path in RHEL7, or want to force the usage of SCSI-MQ regardless of the global scsi_mod.use_blk_mq setting need a way to specify in the host template that SCSI-MQ must be used. Version-Release number of selected component (if applicable): 7.7 Upstream has added a way to specify this: Author: Ming Lei <ming.lei> Date: Tue Mar 13 17:42:41 2018 +0800 scsi: core: introduce force_blk_mq
Patch is predecessor to changes that will be made to storsvc driver in 7.7
Hello How to test it? just add the scsi_mod.use_blk_mq to host?
We may not need this patch for RHEL7, which is only for addressing virito-scsi's issue wrt. queue mapping vs. CPU hotplug. However, there isn't such issue on RHEL7 because of the queue mapping/CPU hotplug handling difference.
We will need it for the storvsc driver update in RHEL7.
(In reply to guazhang from comment #4) > Hello > > How to test it? just add the scsi_mod.use_blk_mq to host? Yes. With the exception of drivers that individually set use_blk_mq, verify the following: Boot with scsi_mod.use_blk_mq=N (the default case in RHEL7) find /sys | fgrep use_blk_mq (to find the sysfs nodes for the individual scsi_host object settings for instantiated hosts, they should be "0" unless a driver has enabled it explicitly) Boot with scsi_mod.use_blk_mq=Y find /sys | fgrep use_blk_mq -- sysfs nodes for scsi_host objects should be "1" (i.e. verify that this change does not force SCSI-MQ "on" or "off" unintentionally for all drivers.) The actual logic in question that is being changed is in scsi_host_alloc() - shost->use_blk_mq = scsi_use_blk_mq && !shost->hostt->disable_blk_mq; + shost->use_blk_mq = (scsi_use_blk_mq || shost->hostt->force_blk_mq) + && !shost->hostt->disable_blk_mq; Drivers can change shost->use_blk_mq after the alloc but before they add the object, these are the drivers that set use_blk_mq individual by their own module parameters. (We did this with some drivers earlier in RHEL7 that wished to use SCSI-MQ but we did not want to turn on SCSI-MQ for all SCSI drivers that might be in use in the kernel.) Drivers that set use_blk_mq individually are: - Infiniband IB/srp -- default module parameter "use_blk_mq" is "Y" - lpfc driver - default module parameter "use_blk_mq" is "0" - qla2xxx driver - default module parameter "ql2xmqsupport" is "0" --- The reason for this change now is that storvsc will not be running in non-MQ mode, and therefore does not need a module option, it can just set the bit in the host template. Once the storvsc driver has been updated in RHEL7 to make use of this functionality to set .force_blk_mq = 1 in the scsi_host_template, it should always report "use_blk_mq" in the scsi_host object in sysfs regardless of the scsi_mod.use_blk_mq setting.
Patch(es) committed on kernel-3.10.0-1017.el7
Hello RHEL7.7 mq regression test passed. so move to verified. thanks guazhang
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2019:2029