Message ID | 1666693096-180008-1-git-send-email-john.garry@huawei.com |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp907269wru; Tue, 25 Oct 2022 02:50:47 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4uktt4r/N5R0q/e/Y0HQ9dVEobF8cwptpknbZ6XthkoFMwnLB6p3B7VmJSYL3EE2AY62yo X-Received: by 2002:a17:90b:3b8d:b0:20d:5c7a:abf1 with SMTP id pc13-20020a17090b3b8d00b0020d5c7aabf1mr44889705pjb.118.1666691447007; Tue, 25 Oct 2022 02:50:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666691447; cv=none; d=google.com; s=arc-20160816; b=OLVn8HInSddPIBMIR9jmMwNbnBLSHpOxfRY78c4PI3OrwIQevSksm6whp22ruUTQRj E3PbL3/riAU1H7om0NEV9WbYVk7b/6/MGcxXnIgMMiJ1lVn98ooIR10Fc2a7k5cqGyda U9JXrTynCsipPNuYCfRS+AdxKvZkv9TZuRDBvRmxJWnAOusF6/zgjmgq3V4Eh3WgIPjl aztgP92qxAXlUm3FnpmHQMNBCopWzunMrFwteT3DjEGWhgDJGI+chtF7CWXiRUiAHpRU cvE7ykZBa9lWiCsJEM6Ck7517Mu1Sgtzgtgan3j4YMgL9wc+nf5Jn7obSd7ZPDWQGfd6 xImQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=ZXCySMUqhWC+GaNN81pYlBpnTfM9bmUu2/dhfCQVNNg=; b=sbUprG7ayl0tv+AXW86yJJnekZPwe7LKKUWnsXpbrbAvSoELyBeBuAsm4zpAfedkaI /CmL4O5uWY496sH5g7n3pgT2f3ASoQiuYuFOL2gWMwa9jHDusCCcEfEgOsLnnc99aDCw Yxz8pQt/vG3LwfzSHmmQt+7O+PFu1P6XVrOgx05lL0XVAFJ7Z79vKnsPWicx0oC6pTiN c4fvkj6gReXm8PkMOWqPdDNfi1s9DuA9huxYjiiWmK04rw/kcZ4Yus1GqiiQJA0wp7/o 2szw5gR97FmqhNm0Oz+86AFVIVqfFH2ZhKYixUHl8Qe59AO0Y99wmi5QzOMhpL/3qWra Yh4g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nu14-20020a17090b1b0e00b002111270cb88si3487665pjb.166.2022.10.25.02.50.33; Tue, 25 Oct 2022 02:50:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231571AbiJYJsJ (ORCPT <rfc822;lucius.rs.storz@gmail.com> + 99 others); Tue, 25 Oct 2022 05:48:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231640AbiJYJsA (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Tue, 25 Oct 2022 05:48:00 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4F239127921; Tue, 25 Oct 2022 02:47:55 -0700 (PDT) Received: from fraeml707-chm.china.huawei.com (unknown [172.18.147.226]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4MxRsg61Zjz687w5; Tue, 25 Oct 2022 17:46:31 +0800 (CST) Received: from lhrpeml500003.china.huawei.com (7.191.162.67) by fraeml707-chm.china.huawei.com (10.206.15.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 25 Oct 2022 11:47:52 +0200 Received: from localhost.localdomain (10.69.192.58) by lhrpeml500003.china.huawei.com (7.191.162.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 25 Oct 2022 10:47:48 +0100 From: John Garry <john.garry@huawei.com> To: <axboe@kernel.dk>, <damien.lemoal@opensource.wdc.com>, <jejb@linux.ibm.com>, <martin.petersen@oracle.com>, <jinpu.wang@cloud.ionos.com>, <hare@suse.de>, <bvanassche@acm.org>, <hch@lst.de>, <ming.lei@redhat.com>, <niklas.cassel@wdc.com> CC: <linux-block@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-ide@vger.kernel.org>, <linux-scsi@vger.kernel.org>, <linuxarm@huawei.com>, John Garry <john.garry@huawei.com> Subject: [PATCH RFC v3 00/22] blk-mq/libata/scsi: SCSI driver tagging improvements Part I Date: Tue, 25 Oct 2022 18:17:54 +0800 Message-ID: <1666693096-180008-1-git-send-email-john.garry@huawei.com> X-Mailer: git-send-email 2.8.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.58] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To lhrpeml500003.china.huawei.com (7.191.162.67) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747652650937848347?= X-GMAIL-MSGID: =?utf-8?q?1747652650937848347?= |
Series |
blk-mq/libata/scsi: SCSI driver tagging improvements Part I
|
|
Message
John Garry
Oct. 25, 2022, 10:17 a.m. UTC
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. We want to make blk-mq manage these tags also. 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 as a request through the block layer. Reasons to do this: - Normal flow of a request and also commonality for regular scsi command lifetime - We don't leave request and scsi_cmnd fields dangling as when we just allocate and free the request for the lifetime of the "internal" command - For poll mode support we can only poll in block layer, so could not send internal commands on poll mode queues if we did not do this, which is a problem - Can get rid of duplicated code like libsas internal command timeout handling Series part I contains core SCSI midlayer, libata, and libsas changes to queue libsas "slow" tasks as requests. Series part II of this series focused on changing libata to queue internal commands as requests. Testing: QEMU with AHCI with disk and cdrom attached, hisi_sas, pm8001. Branch containing all patches is at: https://github.com/hisilicon/kernel-dev/commits/private-topic-sas-6.1-block v2 was here: https://lore.kernel.org/linux-scsi/1654770559-101375-1-git-send-email-john.garry@huawei.com/ Hannes Reinecke (1): scsi: core: Implement reserved command handling John Garry (21): blk-mq: Don't get budget for reserved requests scsi: core: Add scsi_get_dev() scsi: core: Add support to send reserved commands scsi: core: Add support for reserved command timeout handling scsi: libsas: Improve sas_ex_discover_expander() error handling scsi: libsas: Notify LLDD expander found before calling sas_rphy_add() scsi: scsi_transport_sas: Alloc sdev for expander scsi: libsas: Add sas_alloc_slow_task_rq() scsi: libsas: Add sas_queuecommand_internal() scsi: libsas: Add sas_internal_timeout() scsi: core: Use SCSI_SCAN_RESCAN in __scsi_add_device() scsi: scsi_transport_sas: Allocate end device target id in the rphy alloc ata: libata-scsi: Add ata_scsi_setup_sdev() scsi: libsas: Add sas_ata_setup_device() ata: libata-scsi: Allocate sdev early in port probe scsi: libsas drivers: Reserve tags scsi: libsas: Queue SMP commands as requests scsi: libsas: Queue TMF commands as requests scsi: core: Add scsi_alloc_request_hwq() scsi: libsas: Queue internal abort commands as requests scsi: libsas: Delete sas_task_slow.timer block/blk-mq.c | 4 +- drivers/ata/libata-eh.c | 1 + drivers/ata/libata-scsi.c | 49 ++++++++---- drivers/ata/libata.h | 1 + drivers/scsi/aic94xx/aic94xx_init.c | 3 + drivers/scsi/hisi_sas/hisi_sas_main.c | 40 +++++----- drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 3 + drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 + drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 7 ++ drivers/scsi/hosts.c | 16 ++++ drivers/scsi/isci/init.c | 3 + drivers/scsi/libsas/sas_ata.c | 20 +++++ drivers/scsi/libsas/sas_expander.c | 101 ++++++++++++++----------- drivers/scsi/libsas/sas_init.c | 61 ++++++++++++++- drivers/scsi/libsas/sas_internal.h | 5 ++ drivers/scsi/libsas/sas_scsi_host.c | 93 ++++++++++++----------- drivers/scsi/mvsas/mv_init.c | 7 ++ drivers/scsi/pm8001/pm8001_init.c | 8 +- drivers/scsi/scsi_error.c | 3 + drivers/scsi/scsi_lib.c | 42 +++++++++- drivers/scsi/scsi_scan.c | 29 ++++++- drivers/scsi/scsi_transport_sas.c | 34 ++++++--- include/linux/libata.h | 2 + include/scsi/libsas.h | 8 +- include/scsi/scsi_cmnd.h | 3 + include/scsi/scsi_host.h | 21 ++++- 26 files changed, 424 insertions(+), 143 deletions(-)
Comments
On 25/10/2022 11:17, John Garry wrote: Hi all, I meant to say that this is just an update for where I got to here. I am actually changing employer soon, but will continue in upstream linux storage domain. So I don't want people to think that I am just throwing some stuff over the wall for the community to deal with. I would still like people to check this. Thanks, John > 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. We want to make blk-mq manage these tags also. > > 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 as a request through the block layer. Reasons to do > this: > - Normal flow of a request and also commonality for regular scsi command > lifetime > - We don't leave request and scsi_cmnd fields dangling as when we just > allocate and free the request for the lifetime of the "internal" command > - For poll mode support we can only poll in block layer, so could not send > internal commands on poll mode queues if we did not do this, which is a > problem > - Can get rid of duplicated code like libsas internal command timeout > handling > > Series part I contains core SCSI midlayer, libata, and libsas changes to > queue libsas "slow" tasks as requests. > > Series part II of this series focused on changing libata to queue internal > commands as requests. > > Testing: > QEMU with AHCI with disk and cdrom attached, hisi_sas, pm8001. > > Branch containing all patches is at: > https://github.com/hisilicon/kernel-dev/commits/private-topic-sas-6.1-block > > v2 was here: > https://lore.kernel.org/linux-scsi/1654770559-101375-1-git-send-email-john.garry@huawei.com/ > > Hannes Reinecke (1): > scsi: core: Implement reserved command handling > > John Garry (21): > blk-mq: Don't get budget for reserved requests > scsi: core: Add scsi_get_dev() > scsi: core: Add support to send reserved commands > scsi: core: Add support for reserved command timeout handling > scsi: libsas: Improve sas_ex_discover_expander() error handling > scsi: libsas: Notify LLDD expander found before calling sas_rphy_add() > scsi: scsi_transport_sas: Alloc sdev for expander > scsi: libsas: Add sas_alloc_slow_task_rq() > scsi: libsas: Add sas_queuecommand_internal() > scsi: libsas: Add sas_internal_timeout() > scsi: core: Use SCSI_SCAN_RESCAN in __scsi_add_device() > scsi: scsi_transport_sas: Allocate end device target id in the rphy > alloc > ata: libata-scsi: Add ata_scsi_setup_sdev() > scsi: libsas: Add sas_ata_setup_device() > ata: libata-scsi: Allocate sdev early in port probe > scsi: libsas drivers: Reserve tags > scsi: libsas: Queue SMP commands as requests > scsi: libsas: Queue TMF commands as requests > scsi: core: Add scsi_alloc_request_hwq() > scsi: libsas: Queue internal abort commands as requests > scsi: libsas: Delete sas_task_slow.timer > > block/blk-mq.c | 4 +- > drivers/ata/libata-eh.c | 1 + > drivers/ata/libata-scsi.c | 49 ++++++++---- > drivers/ata/libata.h | 1 + > drivers/scsi/aic94xx/aic94xx_init.c | 3 + > drivers/scsi/hisi_sas/hisi_sas_main.c | 40 +++++----- > drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 3 + > drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 3 + > drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 7 ++ > drivers/scsi/hosts.c | 16 ++++ > drivers/scsi/isci/init.c | 3 + > drivers/scsi/libsas/sas_ata.c | 20 +++++ > drivers/scsi/libsas/sas_expander.c | 101 ++++++++++++++----------- > drivers/scsi/libsas/sas_init.c | 61 ++++++++++++++- > drivers/scsi/libsas/sas_internal.h | 5 ++ > drivers/scsi/libsas/sas_scsi_host.c | 93 ++++++++++++----------- > drivers/scsi/mvsas/mv_init.c | 7 ++ > drivers/scsi/pm8001/pm8001_init.c | 8 +- > drivers/scsi/scsi_error.c | 3 + > drivers/scsi/scsi_lib.c | 42 +++++++++- > drivers/scsi/scsi_scan.c | 29 ++++++- > drivers/scsi/scsi_transport_sas.c | 34 ++++++--- > include/linux/libata.h | 2 + > include/scsi/libsas.h | 8 +- > include/scsi/scsi_cmnd.h | 3 + > include/scsi/scsi_host.h | 21 ++++- > 26 files changed, 424 insertions(+), 143 deletions(-) >