From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15B74C4338F for ; Mon, 23 Aug 2021 11:24:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EDDE1613A5 for ; Mon, 23 Aug 2021 11:24:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236637AbhHWLYo (ORCPT ); Mon, 23 Aug 2021 07:24:44 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:37648 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236571AbhHWLYg (ORCPT ); Mon, 23 Aug 2021 07:24:36 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id F01AB1FFAE; Mon, 23 Aug 2021 11:23:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1629717833; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SHe7wSPlLmcQayR5rHxeQsssETwYj6cNLxiaE6nGuBo=; b=TIHVja/Jmp/WEuuqYKkSI+FR2/bJRUbAvxgy31W0sW+y6eJEr/cVHNVRSdcQtC6Q9H1Fha HYcWOtkWU9hZ+K0mstMXP+vNfgg9WPK4f0gnXlYbUvBVQFHCvoVz5kALJj4B03dkhzK9Na aP+7gu3WPG1mYqZPa5loHxqzLLum+Z4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1629717833; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SHe7wSPlLmcQayR5rHxeQsssETwYj6cNLxiaE6nGuBo=; b=xM5XO5k9DxDk9rR2nb0HQw72nR72vwq2IZeMfvVw7OmXlEYZXtl3O4z+xZFbRIoOz5SgVD Ho+2EvC1EclmP0Bw== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id 327A3A3BBA; Mon, 23 Aug 2021 11:23:52 +0000 (UTC) Received: by adalid.arch.suse.de (Postfix, from userid 17828) id 1EA3C518D88D; Mon, 23 Aug 2021 13:23:52 +0200 (CEST) From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, James Smart , Keith Busch , Ming Lei , Sagi Grimberg , Hannes Reinecke , Wen Xiong , Himanshu Madhani , James Smart , Chao Leng , Daniel Wagner Subject: [PATCH v6 2/3] nvme-fc: avoid race between time out and tear down Date: Mon, 23 Aug 2021 13:23:50 +0200 Message-Id: <20210823112351.82899-3-dwagner@suse.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210823112351.82899-1-dwagner@suse.de> References: <20210823112351.82899-1-dwagner@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: James Smart To avoid race between time out and tear down, in tear down process, first we quiesce the queue, and then delete the timer and cancel the time out work for the queue. This patch merges the admin and io sync ops into the queue teardown logic as shown in the RDMA patch 3017013dcc "nvme-rdma: avoid race between time out and tear down". There is no teardown_lock in nvme-fc. Signed-off-by: James Smart CC: Chao Leng Tested-by: Daniel Wagner Reviewed-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/host/fc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 8a903769364f..48aaa753be44 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -2487,6 +2487,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues) */ if (ctrl->ctrl.queue_count > 1) { nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); blk_mq_tagset_busy_iter(&ctrl->tag_set, nvme_fc_terminate_exchange, &ctrl->ctrl); blk_mq_tagset_wait_completed_request(&ctrl->tag_set); @@ -2510,6 +2511,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues) * clean up the admin queue. Same thing as above. */ blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, nvme_fc_terminate_exchange, &ctrl->ctrl); blk_mq_tagset_wait_completed_request(&ctrl->admin_tag_set); -- 2.29.2 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2F45C4338F for ; Mon, 23 Aug 2021 11:24:33 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 87FC6613A5 for ; Mon, 23 Aug 2021 11:24:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 87FC6613A5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=THXNrx5r4K0tKrVdq0/Yq4T3NSl2/g9f90NVnegViaU=; b=QJ057rgjn349ws gw5xoEEZaXBCLw1k3mQA52cCuKYu6YTi3LrSoRhqOnWaVxtgp6JjeRPnlAeem370nABSQA8CLkhxm pHcQF4QW2hIFugDoxvFhTSUnHjG7EenES4L7tLs3zAux2XBlA/POb1swmLOL4Ti9RFlgX2SbJ5BM/ CqMCxiqwu0s3TtwhPq4xGjqqZWvxWn1S+YhyOPnEPFu8ZfRvh2J8v2aQ+5Qv9vlj+8A7v1vtoLItm UkQo7jGPans2C+xo5AfAm/q4zuadeaORJnEMXSBHY3vIw4gwyEi+BEWF/q+jnU0c99Jvt2aFY2Kil Dmt9idCyGCKxxDgrEqIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mI83p-00GYwp-CO; Mon, 23 Aug 2021 11:24:13 +0000 Received: from smtp-out2.suse.de ([195.135.220.29]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mI83Z-00GYob-6o for linux-nvme@lists.infradead.org; Mon, 23 Aug 2021 11:24:01 +0000 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id F01AB1FFAE; Mon, 23 Aug 2021 11:23:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1629717833; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SHe7wSPlLmcQayR5rHxeQsssETwYj6cNLxiaE6nGuBo=; b=TIHVja/Jmp/WEuuqYKkSI+FR2/bJRUbAvxgy31W0sW+y6eJEr/cVHNVRSdcQtC6Q9H1Fha HYcWOtkWU9hZ+K0mstMXP+vNfgg9WPK4f0gnXlYbUvBVQFHCvoVz5kALJj4B03dkhzK9Na aP+7gu3WPG1mYqZPa5loHxqzLLum+Z4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1629717833; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SHe7wSPlLmcQayR5rHxeQsssETwYj6cNLxiaE6nGuBo=; b=xM5XO5k9DxDk9rR2nb0HQw72nR72vwq2IZeMfvVw7OmXlEYZXtl3O4z+xZFbRIoOz5SgVD Ho+2EvC1EclmP0Bw== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id 327A3A3BBA; Mon, 23 Aug 2021 11:23:52 +0000 (UTC) Received: by adalid.arch.suse.de (Postfix, from userid 17828) id 1EA3C518D88D; Mon, 23 Aug 2021 13:23:52 +0200 (CEST) From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, James Smart , Keith Busch , Ming Lei , Sagi Grimberg , Hannes Reinecke , Wen Xiong , Himanshu Madhani , James Smart , Chao Leng , Daniel Wagner Subject: [PATCH v6 2/3] nvme-fc: avoid race between time out and tear down Date: Mon, 23 Aug 2021 13:23:50 +0200 Message-Id: <20210823112351.82899-3-dwagner@suse.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210823112351.82899-1-dwagner@suse.de> References: <20210823112351.82899-1-dwagner@suse.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210823_042357_507882_F367A4BE X-CRM114-Status: GOOD ( 11.29 ) X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org From: James Smart To avoid race between time out and tear down, in tear down process, first we quiesce the queue, and then delete the timer and cancel the time out work for the queue. This patch merges the admin and io sync ops into the queue teardown logic as shown in the RDMA patch 3017013dcc "nvme-rdma: avoid race between time out and tear down". There is no teardown_lock in nvme-fc. Signed-off-by: James Smart CC: Chao Leng Tested-by: Daniel Wagner Reviewed-by: Daniel Wagner Reviewed-by: Hannes Reinecke --- drivers/nvme/host/fc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index 8a903769364f..48aaa753be44 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -2487,6 +2487,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues) */ if (ctrl->ctrl.queue_count > 1) { nvme_stop_queues(&ctrl->ctrl); + nvme_sync_io_queues(&ctrl->ctrl); blk_mq_tagset_busy_iter(&ctrl->tag_set, nvme_fc_terminate_exchange, &ctrl->ctrl); blk_mq_tagset_wait_completed_request(&ctrl->tag_set); @@ -2510,6 +2511,7 @@ __nvme_fc_abort_outstanding_ios(struct nvme_fc_ctrl *ctrl, bool start_queues) * clean up the admin queue. Same thing as above. */ blk_mq_quiesce_queue(ctrl->ctrl.admin_q); + blk_sync_queue(ctrl->ctrl.admin_q); blk_mq_tagset_busy_iter(&ctrl->admin_tag_set, nvme_fc_terminate_exchange, &ctrl->ctrl); blk_mq_tagset_wait_completed_request(&ctrl->admin_tag_set); -- 2.29.2 _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme