Received: by 2002:a05:6a10:c7c6:0:0:0:0 with SMTP id h6csp1467956pxy; Mon, 2 Aug 2021 02:16:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxR5RNcq4bOLJg5oGYW1hqOfJAl1cLbVKvcH/B+qBEUbnULkGTg1M4f1vXLLuERXVqknavo X-Received: by 2002:a6b:e602:: with SMTP id g2mr2127513ioh.50.1627895817179; Mon, 02 Aug 2021 02:16:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627895817; cv=none; d=google.com; s=arc-20160816; b=g+hve+j5BjOg6fqdLgKh1zyJ7f9td+3AJYSO5Y3uQvONmeh/PjHdjgk5lkdlHU4ml0 J8LX2tm4QqYzIbY0pGQWmM9lR59ARcnr6YRKi9+AqJfD8EE20SRT3RnQd6Q3hLs+TCKg dmJ3T7xPYfOPCOlWajh0xd8CCIaJBTtpwgy3yuHuxuNhSWXUvbml8P2QjIah/532pdd5 EUkzeegKrJexVVpu/A6KpTUIYLRRlUE3mHnr/iB41THW7C9hXEoD2pQB7pm2FRoL8KRX woeSeSZD1RYzrd7eifIVaZNn3iyceNplE5nb2T2qy3XsMsBd06dFPWGKD4ZQ4VMnW1Zd D98A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-signature; bh=kKKLeMvUSjTl9xhk4gs1WHWOoquSNjLGEcBM3zENZtY=; b=HXoYQzcGzavIPh4/KJjoHSii3xL3hAKOQCTkLPxLTBWiu30Pfi6XPdi0RzPtVYg8vx hYeWtxZ1IBgZOCu17F7Vo2WOm1fwtTL0AU3v273UxakekLWA9I3tsp3N/zvfzifp88FP uT78o1SzG0wudo5JOBoNMSp7O7mC2yWRlwElh1qNRgEQzbZe3uP2EPMluhppa2AN4PsJ hVZ6PCPU/AtexiEzE+bnje80M5ZijEz8kbn+rQYMAyHt2CW3c877PwQ1YCSLxCz/fqPn wGlXEx6JozJg2c+umbZWkce8/5Pjo4qTUG9hwV62Z+vpcwlksz5gOl+Xy+VKCkVEcaVk q8NQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=WgApY3f7; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=zaEeNV1w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n125si12474528iod.85.2021.08.02.02.16.45; Mon, 02 Aug 2021 02:16:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=WgApY3f7; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=zaEeNV1w; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233090AbhHBJPC (ORCPT + 99 others); Mon, 2 Aug 2021 05:15:02 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:58846 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232670AbhHBJOs (ORCPT ); Mon, 2 Aug 2021 05:14:48 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 330B71FF59; Mon, 2 Aug 2021 09:14:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1627895662; 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=kKKLeMvUSjTl9xhk4gs1WHWOoquSNjLGEcBM3zENZtY=; b=WgApY3f7Ya8WKVsxGBUlHaVoRYxHv3p/NzT+9iubg9nneWks+hZyaS54dARTuB0EIeddEf jLes9u2qVU+yKqnXpbcEMOr2YKj/mvVRWKCWEf2nMjmgnulP178mzv2x16qgyKyN9IgSV6 WwIVx5dLCgZh6d1Cm5+dFeBj4mshpE4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1627895662; 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=kKKLeMvUSjTl9xhk4gs1WHWOoquSNjLGEcBM3zENZtY=; b=zaEeNV1wEtDqOZvI3eiplW+UAhKv7U5BUGbxjyuEh+faatBmoIR+seUayeuARakTynpVA6 e1fHRI9Nn9cpxVAA== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id D17F1A3BB6; Mon, 2 Aug 2021 09:14:21 +0000 (UTC) Received: by adalid.arch.suse.de (Postfix, from userid 17828) id 12F81518C091; Mon, 2 Aug 2021 11:14:21 +0200 (CEST) From: Daniel Wagner To: linux-kernel@vger.kernel.org Cc: James Smart , Keith Busch , Ming Lei , Sagi Grimberg , Hannes Reinecke , Wen Xiong , James Smart , Chao Leng , Daniel Wagner Subject: [PATCH v4 5/8] nvme-fc: avoid race between time out and tear down Date: Mon, 2 Aug 2021 11:14:16 +0200 Message-Id: <20210802091419.56425-6-dwagner@suse.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210802091419.56425-1-dwagner@suse.de> References: <20210802091419.56425-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 [dwagner: updated commit id referenced in commit message] 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 dbb8ad816df8..133b87db4f1d 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