linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V5 0/5] SCSI: fix selection of reply(hw) queue
@ 2018-03-13  9:42 Ming Lei
  2018-03-13  9:42 ` [PATCH V5 1/5] scsi: hpsa: fix selection of reply queue Ming Lei
                   ` (5 more replies)
  0 siblings, 6 replies; 20+ messages in thread
From: Ming Lei @ 2018-03-13  9:42 UTC (permalink / raw)
  To: James Bottomley, Jens Axboe, Martin K . Petersen
  Cc: Christoph Hellwig, linux-scsi, linux-block, Meelis Roos,
	Don Brace, Kashyap Desai, Laurence Oberman, Mike Snitzer,
	Paolo Bonzini, Ming Lei

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-V5

V5:
	- cover legacy vector for megaraid_sas(2/5)
	- patch style change (4/5)
	- add one virtio-scsi cleanup patch(5/5)

V4:
	- splitted from previous patchset
	- handle virtio-scsi by force_blk_mq

Ming Lei (5):
  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
  scsi: virtio_scsi: unify scsi_host_template

 drivers/scsi/hosts.c                        |   1 +
 drivers/scsi/hpsa.c                         |  73 ++++++++++++----
 drivers/scsi/hpsa.h                         |   1 +
 drivers/scsi/megaraid/megaraid_sas.h        |   1 +
 drivers/scsi/megaraid/megaraid_sas_base.c   |  39 ++++++++-
 drivers/scsi/megaraid/megaraid_sas_fusion.c |  12 +--
 drivers/scsi/virtio_scsi.c                  | 129 ++++------------------------
 include/scsi/scsi_host.h                    |   3 +
 8 files changed, 116 insertions(+), 143 deletions(-)

-- 
2.9.5

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2018-03-20  3:16 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-03-13  9:42 [PATCH V5 0/5] SCSI: fix selection of reply(hw) queue Ming Lei
2018-03-13  9:42 ` [PATCH V5 1/5] scsi: hpsa: fix selection of reply queue Ming Lei
2018-03-14  8:57   ` Christoph Hellwig
2018-03-14 15:07   ` Bityutskiy, Artem
2018-03-19 11:48   ` Bityutskiy, Artem
2018-03-19 14:31     ` Jens Axboe
2018-03-19 14:42       ` Artem Bityutskiy
2018-03-19 14:55         ` Kashyap Desai
2018-03-19 15:26         ` Ming Lei
2018-03-20  3:16     ` Martin K. Petersen
2018-03-13  9:42 ` [PATCH V5 2/5] scsi: megaraid_sas: " Ming Lei
2018-03-13 17:13   ` Kashyap Desai
2018-03-14  8:57   ` Christoph Hellwig
2018-03-14 15:07   ` Artem Bityutskiy
2018-03-13  9:42 ` [PATCH V5 3/5] scsi: introduce force_blk_mq Ming Lei
2018-03-13  9:42 ` [PATCH V5 4/5] scsi: virtio_scsi: fix IO hang caused by irq vector automatic affinity Ming Lei
2018-03-14  8:58   ` Christoph Hellwig
2018-03-13  9:42 ` [PATCH V5 5/5] scsi: virtio_scsi: unify scsi_host_template Ming Lei
2018-03-14  8:58   ` Christoph Hellwig
2018-03-15  3:35 ` [PATCH V5 0/5] SCSI: fix selection of reply(hw) queue Martin K. Petersen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).