From patchwork Fri Aug 7 11:06:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javed Hasan X-Patchwork-Id: 11705457 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ABAE014B7 for ; Fri, 7 Aug 2020 11:11:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9267D22CAF for ; Fri, 7 Aug 2020 11:11:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=marvell.com header.i=@marvell.com header.b="TpyH4J7M" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728311AbgHGLLB (ORCPT ); Fri, 7 Aug 2020 07:11:01 -0400 Received: from mx0b-0016f401.pphosted.com ([67.231.156.173]:7586 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728252AbgHGLKW (ORCPT ); Fri, 7 Aug 2020 07:10:22 -0400 Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 077BAFxs007038 for ; Fri, 7 Aug 2020 04:10:15 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0818; bh=IXtWbf3vM3XwUUEAdsnMC+jtb8UsvbJ8sx1XGdsmCdQ=; b=TpyH4J7MGDqW9uX0ezTHyUwlIvwSKBNEEPKnJVtcNBcWpPXsnjF7yp6NDbBumAJgdRbZ rnfpsioXLU8hcCs4mEC9p2tEaXZ3p7aGUctvq+jysED89pq82D064hiwA56ySQnz+BAz SBqUljqCA0b/WdmH+vA1O5zU1zE65aZ+MEwsuI7zdKWdgcAQBKe98FVz1WOxP9bkc6Sp 0c0PPNMSX0METCeNMKpCcMAhm0cN5YCNYrZFkaJYuZb64iRhYim3SdlvQBH6aHWliZ95 9IDtvACiGHxUnV1oBf8Mc3NsT4oWGPnmHZXCkjNvv0oxYPAdCap8Zbd1XD3GJKEoknVm 1Q== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0b-0016f401.pphosted.com with ESMTP id 32s3c98gg0-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Fri, 07 Aug 2020 04:10:15 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 7 Aug 2020 04:10:09 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 7 Aug 2020 04:10:09 -0700 Received: from dut1171.mv.qlogic.com (unknown [10.112.88.18]) by maili.marvell.com (Postfix) with ESMTP id 8AFD53F703F; Fri, 7 Aug 2020 04:10:09 -0700 (PDT) Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id 077BA9Fm020111; Fri, 7 Aug 2020 04:10:09 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id 077BA9pc020052; Fri, 7 Aug 2020 04:10:09 -0700 From: Javed Hasan To: CC: , , Subject: [PATCH 7/7] qedf: Fix race between els completion and flushing els request. Date: Fri, 7 Aug 2020 04:06:56 -0700 Message-ID: <20200807110656.19965-8-jhasan@marvell.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20200807110656.19965-1-jhasan@marvell.com> References: <20200807110656.19965-1-jhasan@marvell.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-08-07_06:2020-08-06,2020-08-07 signatures=0 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Saurav Kashyap Fix race between els completion and flushing els request. Signed-off-by: Saurav Kashyap Signed-off-by: Javed Hasan --- drivers/scsi/qedf/qedf_els.c | 14 ++++++++++++++ drivers/scsi/qedf/qedf_io.c | 2 ++ 2 files changed, 16 insertions(+) diff --git a/drivers/scsi/qedf/qedf_els.c b/drivers/scsi/qedf/qedf_els.c index e2e80ea..6cb8c9b 100644 --- a/drivers/scsi/qedf/qedf_els.c +++ b/drivers/scsi/qedf/qedf_els.c @@ -143,6 +143,7 @@ void qedf_process_els_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, struct qedf_ioreq *els_req) { struct fcoe_cqe_midpath_info *mp_info; + struct qedf_rport *fcport; QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_ELS, "Entered with xid = 0x%x" " cmd_type = %d.\n", els_req->xid, els_req->cmd_type); @@ -156,6 +157,19 @@ void qedf_process_els_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe, return; } + fcport = els_req->fcport; + + /* When flush is active, + * let the cmds be completed from the cleanup context + */ + if (test_bit(QEDF_RPORT_IN_TARGET_RESET, &fcport->flags) || + test_bit(QEDF_RPORT_IN_LUN_RESET, &fcport->flags)) { + QEDF_INFO(&qedf->dbg_ctx, QEDF_LOG_IO, + "Dropping ELS completion xid=0x%x as fcport is flushing", + els_req->xid); + return; + } + clear_bit(QEDF_CMD_OUTSTANDING, &els_req->flags); /* Kill the ELS timer */ diff --git a/drivers/scsi/qedf/qedf_io.c b/drivers/scsi/qedf/qedf_io.c index 7969f3a..86c8afb 100644 --- a/drivers/scsi/qedf/qedf_io.c +++ b/drivers/scsi/qedf/qedf_io.c @@ -1562,6 +1562,8 @@ static void qedf_flush_els_req(struct qedf_ctx *qedf, */ els_req->event = QEDF_IOREQ_EV_ELS_FLUSH; + clear_bit(QEDF_CMD_OUTSTANDING, &els_req->flags); + /* Cancel the timer */ cancel_delayed_work_sync(&els_req->timeout_work);