Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1773607pxb; Mon, 23 Aug 2021 04:25:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxQLJQXWmYGTEODhfjOCKxhDDCNCSGrpbpzSfV0dnV1H6P9WoNEdAQmHINFmqDWCdk8Se7V X-Received: by 2002:a05:6602:1543:: with SMTP id h3mr6001727iow.123.1629717909953; Mon, 23 Aug 2021 04:25:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629717909; cv=none; d=google.com; s=arc-20160816; b=zOp2/4z0aY9j7uKrG31xs/T6EvMITS4AdtKtw+kRYr2RQ5jJjqo2Vl/ZAkZNHDhLoW YicpeMEkVGHDwfTEgH3qptNfIParXEoczuBZLKywJCP3jv3s0gps1+k/tWlocQWVt1rl bXEENcyS9P7W+2TL/Ic5mugyaC6/20vKCBQF3Jlp28+L1g5pfHLrLw9gme/bNTvzlaMc vK5IoKpf5wrYOaCRnQIaA11+Pm6y2hqIJgVl/zIi8tGOTdPTSxPHy6o0ETzs/nHDtvqV PIHym2vGfjAldS9RH3S85lcvYUeH5gmgDI8scz3DMvrVKZTBJMngbgLJGrZyAtN3t8qy oAdQ== 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=SHe7wSPlLmcQayR5rHxeQsssETwYj6cNLxiaE6nGuBo=; b=jyEk81zjyBML8aJH1jnqCGhC7nJ4tCNG5m3HoPZ6KzketKoT5i6paLKMGrRJwKm1o3 UAzhY+eCn+F03m3F15knxLTzp8MMrKmZMC0/dbG6O/v3GObDoCQVP9CSJGiU1O/5QKjp wn24Q3p3taUsTFI6LCmuLsJle0xA+ZnLpFJWHG2xf8W9DasMKHtgJTcYY5DIo2AdKMew CdYEPzoRoYoE6UyT6v98H1AbRpw+H7VbY67EIfXgUcMHBXrT2vv+EQIHYI3e1tBa/qhH Mlx2REHeyhWw5qY6ayIQzuNjTeD4X+vqmn0H6Rw77QcT7kHhc5pEYvpyOxqIPJhBLc6Y mMlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b="TIHVja/J"; 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 j19si14528309iow.12.2021.08.23.04.24.58; Mon, 23 Aug 2021 04:25:09 -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="TIHVja/J"; 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 S236761AbhHWLYn (ORCPT + 99 others); Mon, 23 Aug 2021 07:24:43 -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