mbox series

[RFC,v3,0/8] blk-mq/scsi: Provide hostwide shared tags for SCSI HBAs

Message ID 20191126091416.20052-1-hare@suse.de (mailing list archive)
Headers show
Series blk-mq/scsi: Provide hostwide shared tags for SCSI HBAs | expand

Message

Hannes Reinecke Nov. 26, 2019, 9:14 a.m. UTC
Hi all,

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 :-)

The main diffence is that I've changed the bitmaps to be allocated
separately in all cases, and just set the pointer to the shared bitmap
for the hostwide tags case.
I've also modified smartpqi and hpsa to take advantage of host_tags.

I did audit the iterators, and I _think_ they do the correct thing even
in the shared bitmap case. But then I might have overlooked things,
so feedback and reviews are welcome.

The one thing I'm not happy with is the debugfs interface; for shared
bitmaps all will be displaying essentially the same information, which
could be moved to a top-level directory. But that would change the
layout and I'm not sure if that buys us anything.

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 (4):
  blk-mq: Use a pointer for sbitmap
  scsi: Add template flag 'host_tagset'
  smartpqi: enable host tagset
  hpsa: switch to using blk-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                 |  10 ++--
 block/blk-mq-sched.c                   |   8 ++-
 block/blk-mq-tag.c                     | 104 ++++++++++++++++++++++-----------
 block/blk-mq-tag.h                     |  18 +++---
 block/blk-mq.c                         |  80 ++++++++++++++++---------
 block/blk-mq.h                         |   9 ++-
 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/scsi_lib.c                |   2 +
 drivers/scsi/smartpqi/smartpqi_init.c  |  38 ++++++++----
 include/linux/blk-mq.h                 |   9 ++-
 include/scsi/scsi_host.h               |   3 +
 17 files changed, 260 insertions(+), 199 deletions(-)

Comments

John Garry Nov. 26, 2019, 10:09 a.m. UTC | #1
On 26/11/2019 09:14, Hannes Reinecke wrote:
> Hi all,
> 
> 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 :-)

No worries as long as we can keep moving this forward.

> 
> The main diffence is that I've changed the bitmaps to be allocated
> separately in all cases, and just set the pointer to the shared bitmap
> for the hostwide tags case.

Yeah, I was considering this also.

> I've also modified smartpqi and hpsa to take advantage of host_tags.
> 
> I did audit the iterators, and I _think_ they do the correct thing even
> in the shared bitmap case. But then I might have overlooked things,
> so feedback and reviews are welcome.
> 
> The one thing I'm not happy with is the debugfs interface; for shared
> bitmaps all will be displaying essentially the same information, which
> could be moved to a top-level directory. But that would change the
> layout and I'm not sure if that buys us anything.

I was having a look at this. I'd say we need to still show which bits 
are set per hctx.

Maybe we can do something like this:

a. In hctx_tags_bitmaphow() or other relevant functions, copy shared 
sbitmap map into temp sbitmap map (maybe even the per-hctx sbitmap)
b. iterate over to unset bits not relevant to hctx in temp sbitmap map
c. then do sbitmap_show

Locking may be a bit tricky.

Thanks,
John

> 
> 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 (4):
>    blk-mq: Use a pointer for sbitmap
>    scsi: Add template flag 'host_tagset'
>    smartpqi: enable host tagset
>    hpsa: switch to using blk-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                 |  10 ++--
>   block/blk-mq-sched.c                   |   8 ++-
>   block/blk-mq-tag.c                     | 104 ++++++++++++++++++++++-----------
>   block/blk-mq-tag.h                     |  18 +++---
>   block/blk-mq.c                         |  80 ++++++++++++++++---------
>   block/blk-mq.h                         |   9 ++-
>   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/scsi_lib.c                |   2 +
>   drivers/scsi/smartpqi/smartpqi_init.c  |  38 ++++++++----
>   include/linux/blk-mq.h                 |   9 ++-
>   include/scsi/scsi_host.h               |   3 +
>   17 files changed, 260 insertions(+), 199 deletions(-)
>