From: John Garry <john.garry@huawei.com> To: <axboe@kernel.dk>, <jejb@linux.ibm.com>, <martin.petersen@oracle.com>, <hare@suse.de>, <ming.lei@redhat.com>, <bvanassche@acm.org>, <hch@infradead.org> Cc: <linux-block@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-scsi@vger.kernel.org>, <virtualization@lists.linux-foundation.org>, <esc.storagedev@microsemi.com>, <chenxiang66@hisilicon.com>, John Garry <john.garry@huawei.com> Subject: [PATCH RFC v2 00/24] scsi: enable reserved commands for LLDDs Date: Wed, 11 Mar 2020 00:25:26 +0800 [thread overview] Message-ID: <1583857550-12049-1-git-send-email-john.garry@huawei.com> (raw) This is v2 of original series from Hannes, which I'm hijacking for the moment: https://patchwork.kernel.org/cover/10967071/ And the background: Quite some drivers use internal commands for various purposes, most commonly sending TMFs or querying the HBA status. While these commands use the same submission mechanism than normal I/O commands, they will not be counted as outstanding commands, requiring those drivers to implement their own mechanism to figure out outstanding commands. This patchset enables the use of reserved tags for the SCSI midlayer, enabling LLDDs to rely on the block layer for tracking outstanding commands. More importantly, it allows LLDD to request a valid tag from the block layer without having to implement some tracking mechanism within the driver. This removes quite some hacks which were required for some drivers (eg. fnic or snic). Finally: As I see, there is no dependency on this series to go into the kernel now. And we need it for [0]. Note: [0] also depends on [1] [0] https://lore.kernel.org/linux-block/1583409280-158604-1-git-send-email-john.garry@huawei.com/T/#t [1] https://lore.kernel.org/linux-block/20191014015043.25029-1-ming.lei@redhat.com/ Differences to v1: - Make scsi_{get, put}_reserved_cmd() for Scsi host - Previously we separate scsi_{get, put}_reserved_cmd() for sdev and scsi_host_get_reserved_cmd() for the host - Fix how Scsi_Host.can_queue is set in the virtio-scsi change - Drop Scsi_Host.use_reserved_cmd_q - Drop scsi_is_reserved_cmd() - It was unused - But keep blk_mq_rq_is_reserved() - Add support in libsas and associated HBA drivers - Allocate reserved command in slow task - Switch hisi_sas to use reserved Scsi command - Reorder the series a little - Some tidying Hannes Reinecke (22): scsi: add 'nr_reserved_cmds' field to the SCSI host template scsi: allocate separate queue for reserved commands blk-mq: Implement blk_mq_rq_is_reserved() scsi: Add scsi_{get, put}_reserved_cmd() csiostor: use reserved command for LUN reset scsi: add scsi_cmd_from_priv() virtio_scsi: use reserved commands for TMF scsi: add host tagset busy iterator fnic: use reserved commands fnic: use scsi_host_tagset_busy_iter() to traverse commands hpsa: move hpsa_hba_inquiry after scsi_add_host() hpsa: use reserved commands hpsa: use blk_mq_tagset_busy_iter() to traverse outstanding commands hpsa: drop refcount field from CommandList snic: use reserved commands snic: use tagset iter for traversing commands aacraid: move scsi_add_host() aacraid: use private commands aacraid: replace cmd_list with scsi_host_tagset_busy_iter() aacraid: use scsi_host_tagset_busy_iter() to traverse outstanding commands dpt_i2o: drop cmd_list usage scsi: drop scsi command list John Garry (2): scsi: libsas: aic94xx: hisi_sas: mvsas: pm8001: Allocate Scsi_cmd for slow task scsi: hisi_sas: Use libsas slow task SCSI command block/blk-mq.c | 13 + drivers/scsi/aacraid/aachba.c | 125 ++-- drivers/scsi/aacraid/aacraid.h | 6 +- drivers/scsi/aacraid/comminit.c | 28 +- drivers/scsi/aacraid/commsup.c | 134 ++-- drivers/scsi/aacraid/linit.c | 300 ++++---- drivers/scsi/csiostor/csio_init.c | 3 +- drivers/scsi/csiostor/csio_scsi.c | 49 +- drivers/scsi/dpt_i2o.c | 23 +- drivers/scsi/fnic/fnic_scsi.c | 917 +++++++++++-------------- drivers/scsi/hisi_sas/hisi_sas_main.c | 13 +- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 5 +- drivers/scsi/hosts.c | 27 + drivers/scsi/hpsa.c | 313 ++++----- drivers/scsi/hpsa.h | 1 - drivers/scsi/hpsa_cmd.h | 1 - drivers/scsi/libsas/sas_expander.c | 3 +- drivers/scsi/libsas/sas_init.c | 36 +- drivers/scsi/mvsas/mv_sas.c | 2 +- drivers/scsi/pm8001/pm8001_hwi.c | 4 +- drivers/scsi/pm8001/pm8001_sas.c | 4 +- drivers/scsi/pm8001/pm80xx_hwi.c | 4 +- drivers/scsi/scsi.c | 1 - drivers/scsi/scsi_lib.c | 80 ++- drivers/scsi/scsi_scan.c | 1 - drivers/scsi/snic/snic.h | 2 +- drivers/scsi/snic/snic_main.c | 2 + drivers/scsi/snic/snic_scsi.c | 502 +++++++------- drivers/scsi/virtio_scsi.c | 107 ++- include/linux/blk-mq.h | 2 + include/scsi/libsas.h | 4 +- include/scsi/scsi_cmnd.h | 14 +- include/scsi/scsi_device.h | 1 - include/scsi/scsi_host.h | 14 +- 34 files changed, 1346 insertions(+), 1395 deletions(-) -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: John Garry <john.garry@huawei.com> To: axboe@kernel.dk, jejb@linux.ibm.com, martin.petersen@oracle.com, hare@suse.de, ming.lei@redhat.com, bvanassche@acm.org, hch@infradead.org Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, virtualization@lists.linux-foundation.org, esc.storagedev@microsemi.com, chenxiang66@hisilicon.com, John Garry <john.garry@huawei.com> Subject: [PATCH RFC v2 00/24] scsi: enable reserved commands for LLDDs Date: Wed, 11 Mar 2020 00:25:26 +0800 [thread overview] Message-ID: <1583857550-12049-1-git-send-email-john.garry@huawei.com> (raw) This is v2 of original series from Hannes, which I'm hijacking for the moment: https://patchwork.kernel.org/cover/10967071/ And the background: Quite some drivers use internal commands for various purposes, most commonly sending TMFs or querying the HBA status. While these commands use the same submission mechanism than normal I/O commands, they will not be counted as outstanding commands, requiring those drivers to implement their own mechanism to figure out outstanding commands. This patchset enables the use of reserved tags for the SCSI midlayer, enabling LLDDs to rely on the block layer for tracking outstanding commands. More importantly, it allows LLDD to request a valid tag from the block layer without having to implement some tracking mechanism within the driver. This removes quite some hacks which were required for some drivers (eg. fnic or snic). Finally: As I see, there is no dependency on this series to go into the kernel now. And we need it for [0]. Note: [0] also depends on [1] [0] https://lore.kernel.org/linux-block/1583409280-158604-1-git-send-email-john.garry@huawei.com/T/#t [1] https://lore.kernel.org/linux-block/20191014015043.25029-1-ming.lei@redhat.com/ Differences to v1: - Make scsi_{get, put}_reserved_cmd() for Scsi host - Previously we separate scsi_{get, put}_reserved_cmd() for sdev and scsi_host_get_reserved_cmd() for the host - Fix how Scsi_Host.can_queue is set in the virtio-scsi change - Drop Scsi_Host.use_reserved_cmd_q - Drop scsi_is_reserved_cmd() - It was unused - But keep blk_mq_rq_is_reserved() - Add support in libsas and associated HBA drivers - Allocate reserved command in slow task - Switch hisi_sas to use reserved Scsi command - Reorder the series a little - Some tidying Hannes Reinecke (22): scsi: add 'nr_reserved_cmds' field to the SCSI host template scsi: allocate separate queue for reserved commands blk-mq: Implement blk_mq_rq_is_reserved() scsi: Add scsi_{get, put}_reserved_cmd() csiostor: use reserved command for LUN reset scsi: add scsi_cmd_from_priv() virtio_scsi: use reserved commands for TMF scsi: add host tagset busy iterator fnic: use reserved commands fnic: use scsi_host_tagset_busy_iter() to traverse commands hpsa: move hpsa_hba_inquiry after scsi_add_host() hpsa: use reserved commands hpsa: use blk_mq_tagset_busy_iter() to traverse outstanding commands hpsa: drop refcount field from CommandList snic: use reserved commands snic: use tagset iter for traversing commands aacraid: move scsi_add_host() aacraid: use private commands aacraid: replace cmd_list with scsi_host_tagset_busy_iter() aacraid: use scsi_host_tagset_busy_iter() to traverse outstanding commands dpt_i2o: drop cmd_list usage scsi: drop scsi command list John Garry (2): scsi: libsas: aic94xx: hisi_sas: mvsas: pm8001: Allocate Scsi_cmd for slow task scsi: hisi_sas: Use libsas slow task SCSI command block/blk-mq.c | 13 + drivers/scsi/aacraid/aachba.c | 125 ++-- drivers/scsi/aacraid/aacraid.h | 6 +- drivers/scsi/aacraid/comminit.c | 28 +- drivers/scsi/aacraid/commsup.c | 134 ++-- drivers/scsi/aacraid/linit.c | 300 ++++---- drivers/scsi/csiostor/csio_init.c | 3 +- drivers/scsi/csiostor/csio_scsi.c | 49 +- drivers/scsi/dpt_i2o.c | 23 +- drivers/scsi/fnic/fnic_scsi.c | 917 +++++++++++-------------- drivers/scsi/hisi_sas/hisi_sas_main.c | 13 +- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 5 +- drivers/scsi/hosts.c | 27 + drivers/scsi/hpsa.c | 313 ++++----- drivers/scsi/hpsa.h | 1 - drivers/scsi/hpsa_cmd.h | 1 - drivers/scsi/libsas/sas_expander.c | 3 +- drivers/scsi/libsas/sas_init.c | 36 +- drivers/scsi/mvsas/mv_sas.c | 2 +- drivers/scsi/pm8001/pm8001_hwi.c | 4 +- drivers/scsi/pm8001/pm8001_sas.c | 4 +- drivers/scsi/pm8001/pm80xx_hwi.c | 4 +- drivers/scsi/scsi.c | 1 - drivers/scsi/scsi_lib.c | 80 ++- drivers/scsi/scsi_scan.c | 1 - drivers/scsi/snic/snic.h | 2 +- drivers/scsi/snic/snic_main.c | 2 + drivers/scsi/snic/snic_scsi.c | 502 +++++++------- drivers/scsi/virtio_scsi.c | 107 ++- include/linux/blk-mq.h | 2 + include/scsi/libsas.h | 4 +- include/scsi/scsi_cmnd.h | 14 +- include/scsi/scsi_device.h | 1 - include/scsi/scsi_host.h | 14 +- 34 files changed, 1346 insertions(+), 1395 deletions(-) -- 2.17.1
next reply other threads:[~2020-03-10 16:31 UTC|newest] Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-10 16:25 John Garry [this message] 2020-03-10 16:25 ` [PATCH RFC v2 00/24] scsi: enable reserved commands for LLDDs John Garry 2020-03-10 16:25 ` [PATCH RFC v2 01/24] scsi: add 'nr_reserved_cmds' field to the SCSI host template John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 23:08 ` Ming Lei 2020-03-11 6:55 ` Hannes Reinecke 2020-03-11 8:00 ` Ming Lei 2020-03-10 16:25 ` [PATCH RFC v2 02/24] scsi: allocate separate queue for reserved commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 18:32 ` Christoph Hellwig 2020-03-10 21:08 ` John Garry 2020-03-10 21:08 ` John Garry 2020-03-11 6:22 ` Christoph Hellwig 2020-03-11 6:58 ` Hannes Reinecke 2020-03-11 7:51 ` John Garry 2020-03-11 7:51 ` John Garry 2020-04-06 9:05 ` Hannes Reinecke 2020-04-07 11:54 ` John Garry 2020-04-07 11:54 ` John Garry 2020-04-07 14:00 ` Hannes Reinecke 2020-04-07 14:35 ` John Garry 2020-04-07 14:35 ` John Garry 2020-04-07 14:45 ` Hannes Reinecke 2020-04-07 15:19 ` John Garry 2020-04-07 15:19 ` John Garry 2020-04-07 16:30 ` Christoph Hellwig 2020-04-23 14:13 ` John Garry 2020-04-23 14:13 ` John Garry 2020-04-23 14:49 ` Hannes Reinecke 2020-04-23 15:33 ` John Garry 2020-04-23 15:33 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 03/24] blk-mq: Implement blk_mq_rq_is_reserved() John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 04/24] scsi: Add scsi_{get, put}_reserved_cmd() John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 05/24] csiostor: use reserved command for LUN reset John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 06/24] scsi: add scsi_cmd_from_priv() John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 07/24] virtio_scsi: use reserved commands for TMF John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 08/24] scsi: add host tagset busy iterator John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 09/24] fnic: use reserved commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 10/24] fnic: use scsi_host_tagset_busy_iter() to traverse commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 11/24] hpsa: move hpsa_hba_inquiry after scsi_add_host() John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 12/24] hpsa: use reserved commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-11 8:10 ` Ming Lei 2020-03-17 9:38 ` John Garry 2020-03-17 9:38 ` John Garry 2020-03-17 9:48 ` Hannes Reinecke 2020-03-30 13:42 ` John Garry 2020-03-30 13:42 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 13/24] hpsa: use blk_mq_tagset_busy_iter() to traverse outstanding commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 14/24] hpsa: drop refcount field from CommandList John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 15/24] snic: use reserved commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 16/24] snic: use tagset iter for traversing commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 17/24] aacraid: move scsi_add_host() John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 18/24] aacraid: use private commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 19/24] aacraid: replace cmd_list with scsi_host_tagset_busy_iter() John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 20/24] aacraid: use scsi_host_tagset_busy_iter() to traverse outstanding commands John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 21/24] dpt_i2o: drop cmd_list usage John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 22/24] scsi: drop scsi command list John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 18:35 ` Christoph Hellwig 2020-03-10 20:47 ` John Garry 2020-03-10 20:47 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 23/24] scsi: libsas: aic94xx: hisi_sas: mvsas: pm8001: Allocate Scsi_cmd for slow task John Garry 2020-03-10 16:25 ` John Garry 2020-03-10 16:25 ` [PATCH RFC v2 24/24] scsi: hisi_sas: Use libsas slow task SCSI command John Garry 2020-03-10 16:25 ` John Garry
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1583857550-12049-1-git-send-email-john.garry@huawei.com \ --to=john.garry@huawei.com \ --cc=axboe@kernel.dk \ --cc=bvanassche@acm.org \ --cc=chenxiang66@hisilicon.com \ --cc=esc.storagedev@microsemi.com \ --cc=hare@suse.de \ --cc=hch@infradead.org \ --cc=jejb@linux.ibm.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=ming.lei@redhat.com \ --cc=virtualization@lists.linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.