Received: by 2002:a5d:925a:0:0:0:0:0 with SMTP id e26csp292580iol; Thu, 9 Jun 2022 04:06:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxN8xw+5AxYgbY7CaQcdyoukRpCOrlZ876Q9kMScGy3r8s+LntXmy9xMBZbwh0ykBEhMiX3 X-Received: by 2002:a17:902:c2c7:b0:159:9f9:85f3 with SMTP id c7-20020a170902c2c700b0015909f985f3mr38527563pla.18.1654772805518; Thu, 09 Jun 2022 04:06:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654772805; cv=none; d=google.com; s=arc-20160816; b=etPqFrT9AdkNqWLeIEABJ5n2HsRl1Sy2LRwZwaOJt80AO2ZNC/QNPjzmJstRfoPw+t jsJbHc2/mRyLEuZL9+0Ih2o2SsZaM8YSy9J3tHqe1KaCiNtnpTQNJjAYl1+QJBcVyNSY d8OZSOaSqnfgEXJbWwAtcNMG/f60qoybJ96l+3Ve8UZ1+686ZL+dMKc0divchOF/6dmU +NtlGqya0ejNFF/xp1Sg4/b7PkOMmib7SlNrjvkvWUgj1bFMdbO7zEOd+3XP5+nQCfNm 53Xjq+Dxi7xN+QRDqFxEx/QjFINBzS0zhX0qCNs0so7FsEFcBc6E8nyILvsiK8yZUKwC BnxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=DrhVhfWQI/uFqNZDnG3arE4eRM6nRPqaZQMMNR0qzdo=; b=rAqrT/OzUF7BoclBI3i4br9Hqrld/nQsMR81EVyAmUnVQJa1F/mrVJJH9zNKn+GC76 H9W4qitN0xtW7mBj0BF/k/ZeKWrzKntKWnfF3bQbME57YtoJOWuy9SOeysExOuL2pG0V 53UfBhXexvUgBFCjQGok1tLB5tjsFA9uO10h1wjN0Grnn+kRppvQmfqIoF+OyZZJHQ4K PvzdgNyfbulfLBmDmpppWE+vDeNPN+nMbntkBwngEZk0ql4oTi5N6Otz+bI1OgwRd8Jh eMuzcsO8X6HlLKOW69O75MALJbMU0xpbInfXGc1MuElurp8Mnt0rh5UQR5+HazSGb+Xd lZyQ== 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k11-20020a170902c40b00b00163ddc0d459si37362456plk.320.2022.06.09.04.06.29; Thu, 09 Jun 2022 04:06:45 -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 S243176AbiFIKiI (ORCPT + 99 others); Thu, 9 Jun 2022 06:38:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243062AbiFIKhM (ORCPT ); Thu, 9 Jun 2022 06:37:12 -0400 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A59AD2178B4; Thu, 9 Jun 2022 03:36:47 -0700 (PDT) Received: from fraeml705-chm.china.huawei.com (unknown [172.18.147.201]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4LJgTr1tZMz67cT1; Thu, 9 Jun 2022 18:35:28 +0800 (CST) Received: from lhreml724-chm.china.huawei.com (10.201.108.75) by fraeml705-chm.china.huawei.com (10.206.15.54) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2375.24; Thu, 9 Jun 2022 12:36:45 +0200 Received: from localhost.localdomain (10.69.192.58) by lhreml724-chm.china.huawei.com (10.201.108.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 9 Jun 2022 11:36:42 +0100 From: John Garry To: , , , , , , CC: , , , , , John Garry Subject: [PATCH RFC v2 15/18] scsi: libsas: Queue TMF commands as requests Date: Thu, 9 Jun 2022 18:29:16 +0800 Message-ID: <1654770559-101375-16-git-send-email-john.garry@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1654770559-101375-1-git-send-email-john.garry@huawei.com> References: <1654770559-101375-1-git-send-email-john.garry@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.58] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To lhreml724-chm.china.huawei.com (10.201.108.75) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE 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: X-Mailing-List: linux-kernel@vger.kernel.org Like what we did with SMP commands, send TMF commands through the block layer. In future we can now also take advantage of the block layer request timeout handling. Signed-off-by: John Garry --- drivers/scsi/libsas/sas_scsi_host.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c index f0566f4512b2..520c301e4319 100644 --- a/drivers/scsi/libsas/sas_scsi_host.c +++ b/drivers/scsi/libsas/sas_scsi_host.c @@ -1059,18 +1059,27 @@ int sas_execute_tmf(struct domain_device *device, void *parameter, struct sas_task *task; struct sas_internal *i = to_sas_internal(device->port->ha->core.shost->transportt); - struct sas_ha_struct *ha = device->port->ha; int res, retry; - + struct request *rq; + struct sas_ha_struct *ha = device->port->ha; for (retry = 0; retry < TASK_RETRY; retry++) { + struct scsi_cmnd *scmd; + task = sas_alloc_slow_task(ha, GFP_KERNEL); - if (!task) - return -ENOMEM; + if (!task) { + res = -ENOMEM; + break; + } task->dev = device; task->task_proto = device->tproto; + rq = sas_rq_from_task(task); + + scmd = blk_mq_rq_to_pdu(rq); + ASSIGN_SAS_TASK(scmd, task); + if (dev_is_sata(device)) { task->ata_task.device_control_reg_update = 1; if (force_phy_id >= 0) { @@ -1082,20 +1091,15 @@ int sas_execute_tmf(struct domain_device *device, void *parameter, memcpy(&task->ssp_task, parameter, para_len); } - task->task_done = sas_task_internal_done; + task->task_done = sas_task_complete_internal; task->tmf = tmf; task->slow_task->timer.function = sas_task_internal_timedout; task->slow_task->timer.expires = jiffies + TASK_TIMEOUT; add_timer(&task->slow_task->timer); - res = i->dft->lldd_execute_task(task, GFP_KERNEL); - if (res) { - del_timer_sync(&task->slow_task->timer); - pr_err("executing TMF task failed %016llx (%d)\n", - SAS_ADDR(device->sas_addr), res); - break; - } + rq->end_io = sas_blk_end_sync_rq; + blk_execute_rq_nowait(rq, true); wait_for_completion(&task->slow_task->completion); -- 2.26.2