Received: by 2002:a05:6a10:c7c6:0:0:0:0 with SMTP id h6csp1540896pxy; Mon, 2 Aug 2021 04:28:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwy1JKWzevJmSftasGtaGw/uIVB3YjhCEdKDF2JaozmeZKhDVg43ypkbqci301+59pefSMv X-Received: by 2002:a92:c144:: with SMTP id b4mr616085ilh.159.1627903737645; Mon, 02 Aug 2021 04:28:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1627903737; cv=none; d=google.com; s=arc-20160816; b=xeH6Lb++M5bylYaEPVfzeZ3mkVOWp55VRJiUQncCnhNajNCmRdDnElubkz7lQTMHlz 0GZ9mpGR6yN7NEBL1ze7wh5/V5AgaKhxThtwpoISBpxvYCG/LvJuoW/KYb0uPrurJxFD q6bmfpALK0MOS8eCWynIp5Dh1j55nJlgvR7wTBMAeKrRcPLq0xz2A8p1oj3TzyyVWGhu 7eWxdMUk5Ur2FRuflycJsllkzBncvVYksvuczoshFMhxks1X0QtgKEIhBRbjPmkhw50/ mvMEOtf7wS9/LZ1wC1ogsjLcdan4HloxpJTXPXB8SyEv1V4/8CYY/GLthNehU4U1B6Ux GTVA== 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=hcdHxqOfnp+qa5obRItraAdf5nvrzGv2qnTqlnjx65B6/4KzgG/zRt9PEPAFmyPavJ Qwa9rtEKIbniM8FuS4Mb7GHk05n0FKO04G9KsIjp5Moa/KUvvaQW+iNpZmjqWj1iNLWV 17RZcPgeaVCVPn4D3nSsSU5VroxnJIn7by8f+oH5nSAT1d6LoE638uvLIx6CO9pzevNN hiA/+B/NkP9ExF0YKzvyD9mW+RnCQIPxObqA4nHo72bDFS4NaeDQm1rqGsPx+/B8qdTK 26rvTtaHycYNkZxkrjk9D+YcoK5CJVPQC783MdWCWMSQVsl8W/iophD9XBdJOX8M/yjy d6hQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=FYcAg6x7; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=5jhoDsS3; 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 o15si12098345ilf.79.2021.08.02.04.28.46; Mon, 02 Aug 2021 04:28: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=FYcAg6x7; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=5jhoDsS3; 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 S233522AbhHBL1f (ORCPT + 99 others); Mon, 2 Aug 2021 07:27:35 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:51302 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233413AbhHBL1S (ORCPT ); Mon, 2 Aug 2021 07:27:18 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 1528F1FF7C; Mon, 2 Aug 2021 11:27:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1627903628; 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=FYcAg6x7ObqbbCLc0lYhaAE+gjOO8KOnfUbk8loC5OujR8asbSqtjnmy22/ntdHkU6evLT 2Q4THZ/j6gFTWKZM4OgRgkuhWS+o9+wCHZVlV+K2+ku6vISlViWOv8bdSB4RHNmVeYX3ba gVV3EFA3Hjnj84TgV/5UpiumpJlSPTE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1627903628; 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=5jhoDsS3eb8jhFdAPgL/xPhDtYNueixTSpYFeGWUWGLjmq4v2FnyR3zvXy2ycHO8mxAFxb JmJpWwoo2KsauaAg== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id 002BFA3BC4; Mon, 2 Aug 2021 11:27:07 +0000 (UTC) Received: by adalid.arch.suse.de (Postfix, from userid 17828) id E69F4518C0AE; Mon, 2 Aug 2021 13:27:07 +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 , 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 13:26:55 +0200 Message-Id: <20210802112658.75875-6-dwagner@suse.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210802112658.75875-1-dwagner@suse.de> References: <20210802112658.75875-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