Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp3829751pxu; Mon, 12 Oct 2020 02:12:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzKwnZGz7dyrUXvUiZRYIvLRAGx2mJyM1E8Rc/Bc1zyFb3vV2LnMNB+VKtnKA5Lihc17p9z X-Received: by 2002:a17:906:441:: with SMTP id e1mr25758588eja.396.1602493955217; Mon, 12 Oct 2020 02:12:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602493955; cv=none; d=google.com; s=arc-20160816; b=IZHhnRIWIiEwaIrWOucK3gDRsSEbvV2BE7FZ5KeiZUxuXHKa+MQ41GxmslfroMtGlQ A/cbev93NuFAqrfS03fHQv4yqHHTvPKRgyCnL/hZeGURlLWsYsKPouPWLJj2rCsAjhxK qXJLHDYFC4YruIVFWy2OCfDX5qrtEOOxN8Kcipok0INnziar3vvyvypI/o52EnChmtzf HJKTkHnVhX8UDDoV2r/EHbi5gxwgkKnL/3Ul7W6FTBf5bmoFbV5GGdIm0XYRLzqMGGBL 1TrWlXMZhksQVk9wJGZFFolub0AaB7+gPizTvIRLLwGsJNLV4eQ6+a/u0Tl0X3Xh3PXw 9Hug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=yHJXzNo/36UU3kTqd+MErB2LJB0hUVOr9/4+UWVtJH0=; b=JJLLhHiv+/VqOhh47qjk+iLmTLCjakj8+v025KpT+Xn2V+QPAFxJ3/zUwVYgWj291P TMe7tfg4MeQajRFlp+RXNHdZ1ByFbO0lLKaAwNr9IYuzukg4O52SICZySDhlWSAS6Eaz G9e6s8YD/9Phv6gxwtPTjZWjhINZKi3p3z4z6Y3GyKKpedD1BHOPAVON3IIVZLU5E5jv kZ27gdwp8Q/801syBquj7JhNvKAws2R0tBUx0XVTGdAgjDFMsEjJ3bUzdDcO+jzuQ5zQ I27bWYDlUJFH4FjEpElza/rmysn8VFjJYMg1JzY342f1OpSiq82NAd/hBpDjBEjYqXAz m1zw== ARC-Authentication-Results: i=1; mx.google.com; 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 i20si11813021ejx.686.2020.10.12.02.12.12; Mon, 12 Oct 2020 02:12:35 -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; 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 S1729201AbgJLJLE (ORCPT + 99 others); Mon, 12 Oct 2020 05:11:04 -0400 Received: from mx2.suse.de ([195.135.220.15]:37740 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728974AbgJLJLE (ORCPT ); Mon, 12 Oct 2020 05:11:04 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 0156DB0B7; Mon, 12 Oct 2020 09:11:03 +0000 (UTC) From: Daniel Wagner To: Nilesh Javali , Arun Easi Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org, Daniel Wagner Subject: [PATCH] qla2xxx: Return EBUSY on fcport deletion Date: Mon, 12 Oct 2020 11:11:00 +0200 Message-Id: <20201012091100.55305-1-dwagner@suse.de> X-Mailer: git-send-email 2.16.4 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When the fcport is about to be deleted we should return EBUSY instead of ENODEV. Only for EBUSY the request will be requeued in a multipath setup. Also in case we have a valid qpair but the firmware has not yet started return EBUSY to avoid dropping the request. Signed-off-by: Daniel Wagner --- Hi, During port bounce and fail tests we observed that requests get dropped on a failing path because the driver returned ENODEV and thus the multipath code didn't requeue the request. The tests were done with only the 'fcport && fcport->deleted' condition but Hannes suggested we might as well do the same for 'qpair && !qpair->fw_started'. Thanks, Daniel drivers/scsi/qla2xxx/qla_nvme.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c index 5cc1bbb1ed74..db8b802b147c 100644 --- a/drivers/scsi/qla2xxx/qla_nvme.c +++ b/drivers/scsi/qla2xxx/qla_nvme.c @@ -555,8 +555,11 @@ static int qla_nvme_post_cmd(struct nvme_fc_local_port *lport, fcport = qla_rport->fcport; - if (!qpair || !fcport || (qpair && !qpair->fw_started) || + if ((qpair && !qpair->fw_started) || (fcport && fcport->deleted)) + return -EBUSY; + + if (!qpair || !fcport) return rval; vha = fcport->vha; -- 2.16.4