On 02/12/2019 15:39, Hannes Reinecke wrote:
Hi all,
JFYI, Sumit requested that we rebase this patchset for testing against the latest kernel - it no longer applies for 5.6-rc. I'm going to do that now and repost.
Thanks, John
here now is an updated version of the v2 patchset from John Garry, including the suggestions and reviews from the mailing list. John, apologies for hijacking your work :-) For this version I've only added some slight modifications to Johns original patch (renaming variables etc); the contentious separate sbitmap allocation has been dropped in favour of Johns original version with pointers to the embedded sbitmap. But more importantly I've reworked the scheduler tag allocation after discussions with Ming Lei. Point is, hostwide shared tags can't really be resized; they surely cannot be increased (as it's a hardware limitation), and even decreasing is questionable as any modification here would affect all devices served by this HBA. Scheduler tags, OTOH, can be considered as per-queue, as the I/O scheduler might want to look at all requests on all queues. As such the queue depth is distinct from the actual queue depth of the tagset. Seeing that it is distinct the depth can now be changed independently of the underlying tagset, and there's no need ever to change the tagset itself. I've also modified megaraid_sas, smartpqi and hpsa to take advantage of host_tags. Performance for megaraid_sas is on par with the original implementation, with the added benefit that with this we should be able to handle cpu hotplug properly. Differences to v4: - Rework scheduler tag allocations - Revert back to the original implementation from John Differences to v3: - Include reviews from Ming Lei Differences to v2: - Drop embedded tag bitmaps - Do not share scheduling tags - Add patches for hpsa and smartpqi Differences to v1: - Use a shared sbitmap, and not a separate shared tags (a big change!) - Drop request.shared_tag - Add RB tags Hannes Reinecke (7): blk-mq: rename blk_mq_update_tag_set_depth() blk-mq: add WARN_ON in blk_mq_free_rqs() blk-mq: move shared sbitmap into elevator queue scsi: Add template flag 'host_tagset' megaraid_sas: switch fusion adapters to MQ smartpqi: enable host tagset hpsa: enable host_tagset and switch to MQ John Garry (3): blk-mq: Remove some unused function arguments blk-mq: Facilitate a shared sbitmap per tagset scsi: hisi_sas: Switch v3 hw to MQ Ming Lei (1): blk-mq: rename BLK_MQ_F_TAG_SHARED as BLK_MQ_F_TAG_QUEUE_SHARED block/bfq-iosched.c | 4 +- block/blk-mq-debugfs.c | 12 +-- block/blk-mq-sched.c | 22 +++++ block/blk-mq-tag.c | 140 +++++++++++++++++++++------- block/blk-mq-tag.h | 27 ++++-- block/blk-mq.c | 104 +++++++++++++++------ block/blk-mq.h | 7 +- block/blk-sysfs.c | 7 ++ block/kyber-iosched.c | 4 +- drivers/scsi/hisi_sas/hisi_sas.h | 3 +- drivers/scsi/hisi_sas/hisi_sas_main.c | 36 +++---- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 86 +++++++---------- drivers/scsi/hpsa.c | 44 ++------- drivers/scsi/hpsa.h | 1 - drivers/scsi/megaraid/megaraid_sas.h | 1 - drivers/scsi/megaraid/megaraid_sas_base.c | 65 ++++--------- drivers/scsi/megaraid/megaraid_sas_fusion.c | 14 ++- drivers/scsi/scsi_lib.c | 2 + drivers/scsi/smartpqi/smartpqi_init.c | 38 ++++++-- include/linux/blk-mq.h | 7 +- include/linux/elevator.h | 3 + include/scsi/scsi_host.h | 3 + 22 files changed, 380 insertions(+), 250 deletions(-)