Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp3527ybl; Tue, 7 Jan 2020 12:59:20 -0800 (PST) X-Google-Smtp-Source: APXvYqz4mJHgwXOKfiU8V+MtKxS/2BvQhy1exnvVpQ6L8lPmidBHJxiXoFOMu4FszIqYMC1fctwJ X-Received: by 2002:a05:6830:144d:: with SMTP id w13mr1505768otp.235.1578430759945; Tue, 07 Jan 2020 12:59:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578430759; cv=none; d=google.com; s=arc-20160816; b=x7p2wwlQ9eRiqs35CcTjxPIX+KAFTTmLnx4BrKrc3Est1cyqxUgIgwCn0PK7S+GoWh U7Iw3CxdkaJy4avOliDIEZtH4ZDzPnstOAvToZLxMx85OhPG5UPS/gYiId2IRcjkeGkp ZQTsGI18+dRTlPFXauTOmHkOPVeRntLGyUA8zxvpxnNQW1Jw0L9QQ0RhtJiMW7B0R6bO prr9d1+tPTidlyp+uReTH6wHMiVUfRUMdCNRIWJs/fUMP/7tgdPO3BEbcIpWX3WKIh+M uaK5m9aS9o/TbZm8/i6I/KdwNP1Xt11ndnzamwHyT7V8/yjnGzeafFDy7Wd1NORUrFyj XgIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=KgNQ1xNhqFTWwK9j/17yzq70gXTGtd/w76otoYnXhu4=; b=JJNVzgOA1M5IldSrRLLJ46R1CBgLXa+Wa9Z1gseviyxpE1FAcDYZxEhaNhPLNL7WJL RHYe0dH9jBUh4bxGO6xFyA8l+IUH7NNxPbe/M5CT/0OzcHMRAaz/rcRQDYjLLoxBw7SJ +7w3ljWk3xV32gqo4CLCEv4NbZsDHKfcdi0Ejdk9flonPYiOVaeg/FJjsGyWV9qNR9JJ FI2JmyRa1QIOapSRHFqPDJeM22bk9NIZDoSb1wnWVNCPAeYS+od8JwlHerOpbZ16cm4c 9j7SqPSZFm1OWvEtXN2UrmL23soExEJ26KE0p0oPyU5cuYw+RJXIx4tPllg92X0vQA5q jTuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LshJQAg9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h9si623925oie.74.2020.01.07.12.59.07; Tue, 07 Jan 2020 12:59:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=LshJQAg9; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727346AbgAGU45 (ORCPT + 99 others); Tue, 7 Jan 2020 15:56:57 -0500 Received: from mail.kernel.org ([198.145.29.99]:52968 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727327AbgAGU4w (ORCPT ); Tue, 7 Jan 2020 15:56:52 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BC28E214D8; Tue, 7 Jan 2020 20:56:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578430611; bh=Ty7u6J8Kzec+n1PJ72hiMKYldBjCKxUfAvKTbCJa9vc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LshJQAg9vl010CSO1emsz7AhRDZ2k8pFIvpQY/mpM+zsIrPzQ2vwrLCBDS32E1Dyz Do803T+MtyShstBMyay4M+9eLXPlPG8QQTiLvSYCEYuKidINbqOLNKQmQDEemxKplu KuLEfUlK5E7MbqNx6LlFmyrUdF3aws5zTPkMdyyo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hannes Reinecke , Quinn Tran , Himanshu Madhani , Roman Bolshakov , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 5.4 024/191] scsi: qla2xxx: Use explicit LOGO in target mode Date: Tue, 7 Jan 2020 21:52:24 +0100 Message-Id: <20200107205334.296043641@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200107205332.984228665@linuxfoundation.org> References: <20200107205332.984228665@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Quinn Tran [ Upstream commit 86196a8fa8a84af1395a28ea0548f2ce6ae9bc22 ] Target makes implicit LOGO on session teardown. LOGO ELS is not send on the wire and initiator is not aware that target no longer wants talking to it. Initiator keeps sending I/O requests, target responds with BA_RJT, they time out and then initiator sends ABORT TASK (ABTS-LS). Current behaviour incurs unneeded I/O timeout and can be fixed for some initiators by making explicit LOGO on session deletion. Link: https://lore.kernel.org/r/20191125165702.1013-3-r.bolshakov@yadro.com Reviewed-by: Hannes Reinecke Tested-by: Hannes Reinecke Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani Signed-off-by: Roman Bolshakov Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/qla2xxx/qla_def.h | 1 + drivers/scsi/qla2xxx/qla_iocb.c | 16 ++++++++++++---- drivers/scsi/qla2xxx/qla_target.c | 1 + drivers/scsi/qla2xxx/tcm_qla2xxx.c | 1 + 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index d5386edddaf6..1eb3fe281cc3 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -2401,6 +2401,7 @@ typedef struct fc_port { unsigned int id_changed:1; unsigned int scan_needed:1; unsigned int n2n_flag:1; + unsigned int explicit_logout:1; struct completion nvme_del_done; uint32_t nvme_prli_service_param; diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c index 518eb954cf42..44dc97cebb06 100644 --- a/drivers/scsi/qla2xxx/qla_iocb.c +++ b/drivers/scsi/qla2xxx/qla_iocb.c @@ -2405,11 +2405,19 @@ qla2x00_login_iocb(srb_t *sp, struct mbx_entry *mbx) static void qla24xx_logout_iocb(srb_t *sp, struct logio_entry_24xx *logio) { + u16 control_flags = LCF_COMMAND_LOGO; logio->entry_type = LOGINOUT_PORT_IOCB_TYPE; - logio->control_flags = - cpu_to_le16(LCF_COMMAND_LOGO|LCF_IMPL_LOGO); - if (!sp->fcport->keep_nport_handle) - logio->control_flags |= cpu_to_le16(LCF_FREE_NPORT); + + if (sp->fcport->explicit_logout) { + control_flags |= LCF_EXPL_LOGO|LCF_FREE_NPORT; + } else { + control_flags |= LCF_IMPL_LOGO; + + if (!sp->fcport->keep_nport_handle) + control_flags |= LCF_FREE_NPORT; + } + + logio->control_flags = cpu_to_le16(control_flags); logio->nport_handle = cpu_to_le16(sp->fcport->loop_id); logio->port_id[0] = sp->fcport->d_id.b.al_pa; logio->port_id[1] = sp->fcport->d_id.b.area; diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index a9bd0f513316..950764ed4ab2 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1104,6 +1104,7 @@ void qlt_free_session_done(struct work_struct *work) } } + sess->explicit_logout = 0; spin_unlock_irqrestore(&ha->tgt.sess_lock, flags); sess->free_pending = 0; diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index bab2073c1f72..abe7f79bb789 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -350,6 +350,7 @@ static void tcm_qla2xxx_close_session(struct se_session *se_sess) target_sess_cmd_list_set_waiting(se_sess); spin_unlock_irqrestore(&vha->hw->tgt.sess_lock, flags); + sess->explicit_logout = 1; tcm_qla2xxx_put_sess(sess); } -- 2.20.1