Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp399010pxb; Wed, 18 Aug 2021 05:10:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyVetblsnBGoPALmNs1aS5JQh60zFuP4UT6jHDQ3MFemmyOopYRw1ZzpWgWJP+Cm7aP40TS X-Received: by 2002:a05:6402:5212:: with SMTP id s18mr4218223edd.160.1629288603759; Wed, 18 Aug 2021 05:10:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629288603; cv=none; d=google.com; s=arc-20160816; b=Mkvju+ky9gHlKxCmEkZWcQs4TPbQ3s39/5diiCWXa/uSzIdGmI6sRa0QS7TyPAaDON t3LSfUP1C6ssdXecg4HFkqtw0NK8/FzQ3Z6L+Mdqild8V46B3qq1ri/fblxLCfb3xLmq IxJOqQHy4Fj7V0oAi+mxOeFmfSCxSCBEWSKXlVKw+EzWJ3qyIiJ0xYO2BOdSM9q2O3kJ kS4y48+wdbo1ShwS5Kc6AvyWlbB5h3DBJ/dznzg56xnSJnMVdqRP0w2/jneM3Fhpgvzk mcJ7GCbU5FYqFh2a0cgM0hfMg/cSY3FsVQi9OX24XU92XuP8L7GnQcffMrWIOJO4F4zs 2djg== 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=Tn6D90iiLsb4IxhJIealrzVbHO75LAAXZtFjemxcuD4=; b=A+2A9LjhnWnJI5bOGCfoyliLUKL9IVQpG1+knBzztcNVC2UTULmWCYmxqSjAiOb4P3 bDqBlEtrnYdDAR2LN+mWGD1qA41iN2lYz+SSyAz0JSSeI3e1rMkyvS45WZeSq3sIPqut LBbAFgZPu5jm2o8FMS7owtDR3KEQcenJ4LCtzNhcshlVte2vyzfZmSDWPrry24ftCJBN xTxedMSBqFVf/fLYfPFajg8PaepIhKX5GcwnvwNLzRLKCaBrx6OZ1hTxWFhYL0HTeJyw ZfoBbiHl5NMDacE879v2NNaWWhjP1q1lGqwW8ArDCCV35PmI7nlGlpGIW/VjlwPA155g DggA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=udQdDomn; dkim=neutral (no key) header.i=@suse.de; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x5si5331033ejf.530.2021.08.18.05.09.36; Wed, 18 Aug 2021 05:10:03 -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=udQdDomn; dkim=neutral (no key) header.i=@suse.de; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235660AbhHRMGK (ORCPT + 99 others); Wed, 18 Aug 2021 08:06:10 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:53500 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235168AbhHRMGI (ORCPT ); Wed, 18 Aug 2021 08:06:08 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 2CC7620070; Wed, 18 Aug 2021 12:05:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1629288333; 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=Tn6D90iiLsb4IxhJIealrzVbHO75LAAXZtFjemxcuD4=; b=udQdDomnjekz6QUNNwMDFN28CjCjQvZ0QXTUx9+PrBk/JhLepukkr8O7Rfd/O2KVuh1cnT mcoq2uJ4RIix3tL2snllpZBRRLXzRmksVtqFGdRFyeYjsAx4Mbo6hV9HPXXgg9S/TbHAf8 Og7muASTPiSqM6O6lJ8Bqj8+OhV4HPc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1629288333; 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=Tn6D90iiLsb4IxhJIealrzVbHO75LAAXZtFjemxcuD4=; b=4zw1AW6MuUlFmI0bELHcQ0k4510gePTHt/IJQRRBu86rvNHyDAt/nYsaO9qsxQkG4gHz27 Hwygz6/j7O23tBAg== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id 55558A3B9A; Wed, 18 Aug 2021 12:05:31 +0000 (UTC) Received: by adalid.arch.suse.de (Postfix, from userid 17828) id 7FD2E518CF7D; Wed, 18 Aug 2021 14:05:31 +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 v5 2/3] nvme-fc: avoid race between time out and tear down Date: Wed, 18 Aug 2021 14:05:29 +0200 Message-Id: <20210818120530.130501-3-dwagner@suse.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210818120530.130501-1-dwagner@suse.de> References: <20210818120530.130501-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 8e59e6d142c1..3ff783a2e9f7 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