Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp500452pxb; Tue, 14 Sep 2021 02:24:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNMVxVnNsqlwvQNlIe2+CytGASQwh4Qt8a+Lmt1h+qrCnfCKYvzVjEN920D1oolwUiAmMQ X-Received: by 2002:a17:906:7714:: with SMTP id q20mr18189391ejm.551.1631611485512; Tue, 14 Sep 2021 02:24:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631611485; cv=none; d=google.com; s=arc-20160816; b=z+MPCWHXnTZjhTDzZovLFuEmt6H1By1DDSlHW4t9PAu4w8j0lHsOGzHLWwkpqUmDt2 JWJVftlj7KZkxsVxVae/LyOs4vfLmC6r5V/EFkaHR3I3njUJseWck/oRSGY8yjcHaQVx WOI45AcmhLDgmdu8Y/SKALeDfIntnQjq3Sn7Z7rCLXFJz0AzZEHrL7LOcXZaC0vz5rZj 7hdBd6aeJWpan2uI2mJp82HTAMMVnboR9ZVvnQypF1sArsH3eo+1HK7gKIdF/eIIKmKA uLIjgOAjE0BORLMIZn+VMGGRDk7tf0WROp0fDkoPIHzlSweklKYzodOWFyjbCfConrVG +Jpg== 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=wvNXtZL2Cnz/ihNZ+foEvV0IL5NeP4sXHi9jS3nzwog=; b=byOiqgrQfyFJgY8TAwHofGXINvee9/DQv/Ylnktk/HHtgEEe43qPbXK+mn31LBhGVn qCbhTtFgCmmQaqk3SYH7AAGkobmFnNlmqWHIyz7u31loO6j0zAw1ARgXZp5XQ6tgeAV8 SZ2ib9TfZ97t7Cb2OGkdghWAoNJowxmSDIFyY6s3x32tFLRIODLFKRwPxNnf02+RAERC HISMdcwxdQ4Ab4UBbptlXGW9kkqWcki6u+U1R0LKeOkfBpGTHStbl8qLmzhPVPUoAI6t Px8+VjN/ruEeBmIoKJ1r4asgLHicJjoB9Jy6PbAJM+c8Jh08yzcYO0zWkaC9Xrn1TEG2 3T1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=QP02cubG; dkim=neutral (no key) header.i=@suse.de header.b="/wWGY1DO"; 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 f16si3482190edf.48.2021.09.14.02.24.21; Tue, 14 Sep 2021 02:24:45 -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=QP02cubG; dkim=neutral (no key) header.i=@suse.de header.b="/wWGY1DO"; 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 S231545AbhINJVp (ORCPT + 99 others); Tue, 14 Sep 2021 05:21:45 -0400 Received: from smtp-out2.suse.de ([195.135.220.29]:45424 "EHLO smtp-out2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231308AbhINJV1 (ORCPT ); Tue, 14 Sep 2021 05:21:27 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id A68D4200E5; Tue, 14 Sep 2021 09:20:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1631611209; 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=wvNXtZL2Cnz/ihNZ+foEvV0IL5NeP4sXHi9jS3nzwog=; b=QP02cubGK7TykxogJT+hf9XcOhQr0GbgQesd8AkkbJyMqrK8pAD/izf/vOVRT1O2ok+Y0m UZ3agbDAmvGqYqnU5ZIO54HWeA+d02+tGTAHNr/gGnXGhWrjO8gQKl33vMfT/ihr/eedbq BL1iHcGu0L35uj136cvz7xPHaA0djgk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1631611209; 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=wvNXtZL2Cnz/ihNZ+foEvV0IL5NeP4sXHi9jS3nzwog=; b=/wWGY1DOcWmQR/B5dC7sme3VoZB2uqejbsbksBwvJE9zv7rK6zdnGA+e/IsVL+M8F9kYbJ hLKMyH7f6h/2jDDA== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id 9C79FA3BD0; Tue, 14 Sep 2021 09:20:09 +0000 (UTC) Received: by adalid.arch.suse.de (Postfix, from userid 17828) id 88B49518E62B; Tue, 14 Sep 2021 11:20:09 +0200 (CEST) From: Daniel Wagner To: linux-nvme@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Hannes Reinecke , Sagi Grimberg , Keith Busch , Ming Lei , Wen Xiong , Himanshu Madhani , James Smart , Chao Leng , Daniel Wagner Subject: [PATCH v7 2/3] nvme-fc: avoid race between time out and tear down Date: Tue, 14 Sep 2021 11:20:07 +0200 Message-Id: <20210914092008.40370-3-dwagner@suse.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210914092008.40370-1-dwagner@suse.de> References: <20210914092008.40370-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 b5d9a5507de5..6ebe68396712 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