[PATCH 0/9] blk-mq/scsi: convert private reply queue into blk_mq hw queue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

The 1st patch introduces support hostwide tags for multiple hw queues
via the simplest approach to share single 'struct blk_mq_tags' instance
among all hw queues. In theory, this way won't cause any performance drop.
Even small IOPS improvement can be observed on random IO on
null_blk/scsi_debug.

By applying the hostwide tags for MQ, we can convert some SCSI driver's
private reply queue into generic blk-mq hw queue, then at least two
improvement can be obtained:

1) the private reply queue maping can be removed from drivers, since the
mapping has been implemented as generic API in blk-mq core

2) it helps to solve the generic managed IRQ race[1] during CPU hotplug
in generic way, otherwise we have to re-invent new way to address the
same issue for these drivers using private reply queue.


[1] https://lore.kernel.org/linux-block/20190527150207.11372-1-ming.lei@xxxxxxxxxx/T/#m6d95e2218bdd712ffda8f6451a0bb73eb2a651af

Any comment and test feedback are appreciated.

Thanks,
Ming

Hannes Reinecke (1):
  scsi: Add template flag 'host_tagset'

Ming Lei (8):
  blk-mq: allow hw queues to share hostwide tags
  block: null_blk: introduce module parameter of 'g_host_tags'
  scsi_debug: support host tagset
  scsi: introduce scsi_cmnd_hctx_index()
  scsi: hpsa: convert private reply queue to blk-mq hw queue
  scsi: hisi_sas_v3: convert private reply queue to blk-mq hw queue
  scsi: megaraid: convert private reply queue to blk-mq hw queue
  scsi: mp3sas: convert private reply queue to blk-mq hw queue

 block/blk-mq-debugfs.c                      |  1 +
 block/blk-mq-sched.c                        |  8 +++
 block/blk-mq-tag.c                          |  6 ++
 block/blk-mq.c                              | 14 ++++
 block/elevator.c                            |  5 +-
 drivers/block/null_blk_main.c               |  6 ++
 drivers/scsi/hisi_sas/hisi_sas.h            |  2 +-
 drivers/scsi/hisi_sas/hisi_sas_main.c       | 36 +++++-----
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c      | 46 +++++--------
 drivers/scsi/hpsa.c                         | 49 ++++++--------
 drivers/scsi/megaraid/megaraid_sas_base.c   | 50 +++++---------
 drivers/scsi/megaraid/megaraid_sas_fusion.c |  4 +-
 drivers/scsi/mpt3sas/mpt3sas_base.c         | 74 ++++-----------------
 drivers/scsi/mpt3sas/mpt3sas_base.h         |  3 +-
 drivers/scsi/mpt3sas/mpt3sas_scsih.c        | 17 +++++
 drivers/scsi/scsi_debug.c                   |  3 +
 drivers/scsi/scsi_lib.c                     |  2 +
 include/linux/blk-mq.h                      |  1 +
 include/scsi/scsi_cmnd.h                    | 15 +++++
 include/scsi/scsi_host.h                    |  3 +
 20 files changed, 168 insertions(+), 177 deletions(-)

-- 
2.20.1




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux