From: John Garry <john.garry@huawei.com> To: <axboe@kernel.dk>, <damien.lemoal@opensource.wdc.com>, <bvanassche@acm.org>, <jejb@linux.ibm.com>, <martin.petersen@oracle.com>, <hch@lst.de>, <ming.lei@redhat.com>, <hare@suse.de> Cc: <chenxiang66@hisilicon.com>, <linux-block@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-ide@vger.kernel.org>, <linux-scsi@vger.kernel.org>, <dm-devel@redhat.com>, <beanhuo@micron.com>, John Garry <john.garry@huawei.com> Subject: [PATCH RFC 00/11] blk-mq/libata/scsi: SCSI driver tagging improvements Date: Tue, 22 Mar 2022 18:39:34 +0800 [thread overview] Message-ID: <1647945585-197349-1-git-send-email-john.garry@huawei.com> (raw) Currently SCSI low-level drivers are required to manage tags for commands which do not come via the block layer - libata internal commands would be an example of one of these. There was some work to provide "reserved commands" support in such series as https://lore.kernel.org/linux-scsi/20211125151048.103910-1-hare@suse.de/ This was based on allocating a request for the lifetime of the "internal" command. This series tries to solve that problem by not just allocating the request but also sending it through the block layer, that being the normal flow for a request. We need to do this as we may only poll completion of requests through the block layer, so would need to do this for poll queue support. There is still scope to allocate commands just to get a tag as token as that may suit some other scenarios, but it's not what we do here. This series extends blk-mq to support a request queue having a custom set of ops. In addition SCSI core code adds support for these type of requests. This series does not include SCSI core handling for enabling reserved tags per tagset, but that would be easy to add. Based on mkp-scsi 5.18/scsi-staging @ 66daf3e6b993 Please consider as an RFC for now. I think that the libata change has the largest scope for improvement... John Garry (11): blk-mq: Add blk_mq_init_queue_ops() scsi: core: Add SUBMITTED_BY_SCSI_CUSTOM_OPS libata: Send internal commands through the block layer scsi: libsas: Send SMP commands through the block layer scsi: libsas: Send TMF commands through the block layer scsi: core: Add scsi_alloc_request_hwq() scsi: libsas: Send internal abort commands through the block layer scsi: libsas: Change ATA support to deal with each qc having a SCSI command scsi: libsas: Add sas_task_to_unique_tag() scsi: libsas: Add sas_task_to_hwq() scsi: hisi_sas: Remove private tag management block/blk-mq.c | 23 +++- drivers/ata/libata-core.c | 121 +++++++++++++------ drivers/md/dm-rq.c | 2 +- drivers/scsi/hisi_sas/hisi_sas_main.c | 66 +---------- drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 +- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 3 +- drivers/scsi/libsas/sas_ata.c | 11 +- drivers/scsi/libsas/sas_expander.c | 38 ++++-- drivers/scsi/libsas/sas_internal.h | 1 + drivers/scsi/libsas/sas_scsi_host.c | 153 ++++++++++++++++++++----- drivers/scsi/scsi_lib.c | 14 +++ include/linux/blk-mq.h | 5 +- include/scsi/libsas.h | 4 +- include/scsi/scsi_cmnd.h | 4 + 14 files changed, 298 insertions(+), 150 deletions(-) -- 2.26.2
WARNING: multiple messages have this Message-ID (diff)
From: John Garry <john.garry@huawei.com> To: <axboe@kernel.dk>, <damien.lemoal@opensource.wdc.com>, <bvanassche@acm.org>, <jejb@linux.ibm.com>, <martin.petersen@oracle.com>, <hch@lst.de>, <ming.lei@redhat.com>, <hare@suse.de> Cc: linux-scsi@vger.kernel.org, chenxiang66@hisilicon.com, John Garry <john.garry@huawei.com>, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-ide@vger.kernel.org, dm-devel@redhat.com, beanhuo@micron.com Subject: [dm-devel] [PATCH RFC 00/11] blk-mq/libata/scsi: SCSI driver tagging improvements Date: Tue, 22 Mar 2022 18:39:34 +0800 [thread overview] Message-ID: <1647945585-197349-1-git-send-email-john.garry@huawei.com> (raw) Currently SCSI low-level drivers are required to manage tags for commands which do not come via the block layer - libata internal commands would be an example of one of these. There was some work to provide "reserved commands" support in such series as https://lore.kernel.org/linux-scsi/20211125151048.103910-1-hare@suse.de/ This was based on allocating a request for the lifetime of the "internal" command. This series tries to solve that problem by not just allocating the request but also sending it through the block layer, that being the normal flow for a request. We need to do this as we may only poll completion of requests through the block layer, so would need to do this for poll queue support. There is still scope to allocate commands just to get a tag as token as that may suit some other scenarios, but it's not what we do here. This series extends blk-mq to support a request queue having a custom set of ops. In addition SCSI core code adds support for these type of requests. This series does not include SCSI core handling for enabling reserved tags per tagset, but that would be easy to add. Based on mkp-scsi 5.18/scsi-staging @ 66daf3e6b993 Please consider as an RFC for now. I think that the libata change has the largest scope for improvement... John Garry (11): blk-mq: Add blk_mq_init_queue_ops() scsi: core: Add SUBMITTED_BY_SCSI_CUSTOM_OPS libata: Send internal commands through the block layer scsi: libsas: Send SMP commands through the block layer scsi: libsas: Send TMF commands through the block layer scsi: core: Add scsi_alloc_request_hwq() scsi: libsas: Send internal abort commands through the block layer scsi: libsas: Change ATA support to deal with each qc having a SCSI command scsi: libsas: Add sas_task_to_unique_tag() scsi: libsas: Add sas_task_to_hwq() scsi: hisi_sas: Remove private tag management block/blk-mq.c | 23 +++- drivers/ata/libata-core.c | 121 +++++++++++++------ drivers/md/dm-rq.c | 2 +- drivers/scsi/hisi_sas/hisi_sas_main.c | 66 +---------- drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 +- drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 3 +- drivers/scsi/libsas/sas_ata.c | 11 +- drivers/scsi/libsas/sas_expander.c | 38 ++++-- drivers/scsi/libsas/sas_internal.h | 1 + drivers/scsi/libsas/sas_scsi_host.c | 153 ++++++++++++++++++++----- drivers/scsi/scsi_lib.c | 14 +++ include/linux/blk-mq.h | 5 +- include/scsi/libsas.h | 4 +- include/scsi/scsi_cmnd.h | 4 + 14 files changed, 298 insertions(+), 150 deletions(-) -- 2.26.2 -- dm-devel mailing list dm-devel@redhat.com https://listman.redhat.com/mailman/listinfo/dm-devel
next reply other threads:[~2022-03-22 10:45 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-22 10:39 John Garry [this message] 2022-03-22 10:39 ` [dm-devel] [PATCH RFC 00/11] blk-mq/libata/scsi: SCSI driver tagging improvements John Garry 2022-03-22 10:39 ` [PATCH 01/11] blk-mq: Add blk_mq_init_queue_ops() John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 11:18 ` Christoph Hellwig 2022-03-22 11:18 ` [dm-devel] " Christoph Hellwig 2022-03-22 11:33 ` John Garry 2022-03-22 11:33 ` [dm-devel] " John Garry 2022-03-22 12:16 ` Hannes Reinecke 2022-03-22 12:16 ` [dm-devel] " Hannes Reinecke 2022-03-22 12:30 ` John Garry 2022-03-22 12:30 ` [dm-devel] " John Garry 2022-03-22 14:03 ` Hannes Reinecke 2022-03-22 14:03 ` [dm-devel] " Hannes Reinecke 2022-03-22 15:17 ` John Garry 2022-03-22 15:17 ` [dm-devel] " John Garry 2022-03-22 15:31 ` Hannes Reinecke 2022-03-22 15:31 ` [dm-devel] " Hannes Reinecke 2022-03-23 2:57 ` Bart Van Assche 2022-03-23 2:57 ` [dm-devel] " Bart Van Assche 2022-03-23 9:01 ` John Garry 2022-03-23 9:01 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 02/11] scsi: core: Add SUBMITTED_BY_SCSI_CUSTOM_OPS John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 11:20 ` Christoph Hellwig 2022-03-22 11:20 ` [dm-devel] " Christoph Hellwig 2022-03-22 10:39 ` [PATCH 03/11] libata: Send internal commands through the block layer John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 11:20 ` Christoph Hellwig 2022-03-22 11:20 ` [dm-devel] " Christoph Hellwig 2022-03-22 11:36 ` John Garry 2022-03-22 11:36 ` [dm-devel] " John Garry 2022-04-07 14:32 ` John Garry 2022-04-07 14:32 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 04/11] scsi: libsas: Send SMP " John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 11:23 ` Christoph Hellwig 2022-03-22 11:23 ` [dm-devel] " Christoph Hellwig 2022-03-22 14:37 ` John Garry 2022-03-22 14:37 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 05/11] scsi: libsas: Send TMF " John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 06/11] scsi: core: Add scsi_alloc_request_hwq() John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 07/11] scsi: libsas: Send internal abort commands through the block layer John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 08/11] scsi: libsas: Change ATA support to deal with each qc having a SCSI command John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 09/11] scsi: libsas: Add sas_task_to_unique_tag() John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 10/11] scsi: libsas: Add sas_task_to_hwq() John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 10:39 ` [PATCH 11/11] scsi: hisi_sas: Remove private tag management John Garry 2022-03-22 10:39 ` [dm-devel] " John Garry 2022-03-22 11:30 ` [PATCH RFC 00/11] blk-mq/libata/scsi: SCSI driver tagging improvements Hannes Reinecke 2022-03-22 11:30 ` [dm-devel] " Hannes Reinecke 2022-03-22 12:17 ` John Garry 2022-03-22 12:17 ` [dm-devel] " 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=1647945585-197349-1-git-send-email-john.garry@huawei.com \ --to=john.garry@huawei.com \ --cc=axboe@kernel.dk \ --cc=beanhuo@micron.com \ --cc=bvanassche@acm.org \ --cc=chenxiang66@hisilicon.com \ --cc=damien.lemoal@opensource.wdc.com \ --cc=dm-devel@redhat.com \ --cc=hare@suse.de \ --cc=hch@lst.de \ --cc=jejb@linux.ibm.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-ide@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 \ /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.