On 03/09/2018 04:32 AM, Ming Lei wrote:
> Hi All,
>
> The patches fixes reply queue(virt-queue on virtio-scsi) selection on hpsa,
> megaraid_sa and virtio-scsi, and IO hang can be caused easily by this issue.
>
> This issue is triggered by 84676c1f21e8 ("genirq/affinity: assign vectors
> to all possible CPUs"). After 84676c1f21e8, it is easy to see one msix
> vector mapped to all offline CPUs. If the reply queue is seleteced from
> all allocated msix vectors(reply queues) in round-roin way, the selected
> replay queue may not have any online CPU mapped, IO hang is caused.
>
> Both hpsa and megaraid_sas uses host-wide tagset, we can't convert the
> reply queue to blk_mq hw queue directly, otherwise IO performance is degraded
> much, according to Kashyap's test, so this patchset sets up one mapping talbe
> for selecting reply queue, and this approach has been used by mpt3sas already.
>
> For virtio-scsi, the virt-queue is really hw queue wrt. blk-mq view, so
> we introduce 'force_blk_mq' for fix this issue because: 1) virtio-blk
> has been used for years in blk-mq mode; 2) we have discussed recently
> that scsi_mq will be enabled at default soon.
>
> gitweb:
> https://github.com/ming1/linux/tree/v4.16-rc-select-reply-queue-fix-V4
>
> V4:
> - splitted from previous patchset
> - handle virtio-scsi by force_blk_mq
>
> Ming Lei (4):
> scsi: hpsa: fix selection of reply queue
> scsi: megaraid_sas: fix selection of reply queue
> scsi: introduce force_blk_mq
> scsi: virtio_scsi: fix IO hang caused by irq vector automatic affinity
>
> drivers/scsi/hosts.c | 1 +
> drivers/scsi/hpsa.c | 73
> +++++++++++++++++++++--------
> drivers/scsi/hpsa.h | 1 +
> drivers/scsi/megaraid/megaraid_sas.h | 2 +-
> drivers/scsi/megaraid/megaraid_sas_base.c | 34 +++++++++++++-
> drivers/scsi/megaraid/megaraid_sas_fusion.c | 12 ++---
> drivers/scsi/virtio_scsi.c | 59 ++---------------------
> include/scsi/scsi_host.h | 3 ++
> 8 files changed, 100 insertions(+), 85 deletions(-)
>
Well ... while this looks good in principle, what happens on cpu hotplug?
Don't we have to redo the map then?
Cheers,
Hannes
--
Dr. Hannes Reinecke Teamlead Storage & Networking
[email protected] +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)