Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp2906274ybx; Fri, 8 Nov 2019 11:05:31 -0800 (PST) X-Google-Smtp-Source: APXvYqx8bGYFKFPdbD4lKKCP5PKKglJRHPnFmboq7mc7MQADAPvKPVeD2wZUQQLmE//41OFFGCtu X-Received: by 2002:a05:6402:213:: with SMTP id t19mr12248740edv.7.1573239930886; Fri, 08 Nov 2019 11:05:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573239930; cv=none; d=google.com; s=arc-20160816; b=TCsXoDN8Mhi0pQPw1Y+RPWK2SFK1aBcM3e0icaLNhDoE51h/nhMqjok5AW4zp2buzd rfiWBJvNo1Vs5PlRra0wyQt5yuDoG1WMj4HUPfQ1qZzr2q3G9Ad5eC16A8kz9y5bRxkR zVoz6WbqeQqNNG50LtQ/QY5EeahpDfIK9wAX2MybMNReJ//x955i+GMISb5J7P0/JZah lBcpkEIPyFkRtM41OsktfqREVoGLRK9HxT7M/GNeoFzj5ME3v2mZOxogGhRrKkN3CcyL DUszKw+K2DgdQMAYIZTNCCvScstw0pPBaaHOsP0hJeWAGqUgoEdUGBFhy6jWADfHEgEC Ogfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=julDWntEh/dUU0X+4ewQs9c//22/6pYI8eUhPzgduBc=; b=R5TgG4CMwWmt1BUJ8g/3PHjAi0EOLbm/CdV8iDJufFEx55PtkDhe0RvJ1RVmK5rz7k qVUnmxyWloX/YJjB3UX3p2c0IX8J6iOXs6WCeuHxNoskl2EQL+6QT/hJyqQLVN/kc2aA wb+5WlK2D/UlZEEkIgTdUNcwK0yS1yvMF2LzOJIdBPsYpLwtO8632MtVFuAlbdUxMbw1 fJ2IPv1J/0VPHpeeLhtrKTQ/j+DGNTZvynILCrLovtwEfUW4SnaoY6Zd71sLOCjfUsLu 6BSAKj53dH9K0h8c2fE4iZfKB1viHG2x0uttXfb5XevcCYaqGnb9PGz1Hv4Ex7NnMsfg g6tQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=y3bvCovu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q18si5038096eda.291.2019.11.08.11.05.07; Fri, 08 Nov 2019 11:05:30 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=y3bvCovu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390032AbfKHTA4 (ORCPT + 99 others); Fri, 8 Nov 2019 14:00:56 -0500 Received: from mail.kernel.org ([198.145.29.99]:58152 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727233AbfKHTAy (ORCPT ); Fri, 8 Nov 2019 14:00:54 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C840C215EA; Fri, 8 Nov 2019 19:00:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573239653; bh=da0pw4Wq56u4APoQcdxadqZVOt5YS5u/iJanKGGGwrc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=y3bvCovuG9GNcwYpSF2LwMTT0BcHDSVsZ3bkMuMbitW3rEEtplhKNob2hrlTzk/Pc TboEa03cqKuCC5KUxu9d2VhNaDNwVr9rlhyXckt8D+KTspGZ1cRo6KvsiWZzbXBMmJ uwWzQyV0Yb+f2Kq92FHD8jjAEPoLFO53DcZ6qmiQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Laurence Oberman , "Ewan D. Milne" , Bart Van Assche , Hannes Reinecke , "Martin K. Petersen" , Sasha Levin Subject: [PATCH 4.19 16/79] scsi: scsi_dh_alua: handle RTPG sense code correctly during state transitions Date: Fri, 8 Nov 2019 19:49:56 +0100 Message-Id: <20191108174753.477274868@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191108174745.495640141@linuxfoundation.org> References: <20191108174745.495640141@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hannes Reinecke [ Upstream commit b6ce6fb121a655aefe41dccc077141c102145a37 ] Some arrays are not capable of returning RTPG data during state transitioning, but rather return an 'LUN not accessible, asymmetric access state transition' sense code. In these cases we can set the state to 'transitioning' directly and don't need to evaluate the RTPG data (which we won't have anyway). Link: https://lore.kernel.org/r/20191007135701.32389-1-hare@suse.de Reviewed-by: Laurence Oberman Reviewed-by: Ewan D. Milne Reviewed-by: Bart Van Assche Signed-off-by: Hannes Reinecke Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/device_handler/scsi_dh_alua.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index 9c21938ed67ed..c95c782b93a53 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -526,6 +526,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg) unsigned int tpg_desc_tbl_off; unsigned char orig_transition_tmo; unsigned long flags; + bool transitioning_sense = false; if (!pg->expiry) { unsigned long transition_tmo = ALUA_FAILOVER_TIMEOUT * HZ; @@ -586,13 +587,19 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg) goto retry; } /* - * Retry on ALUA state transition or if any - * UNIT ATTENTION occurred. + * If the array returns with 'ALUA state transition' + * sense code here it cannot return RTPG data during + * transition. So set the state to 'transitioning' directly. */ if (sense_hdr.sense_key == NOT_READY && - sense_hdr.asc == 0x04 && sense_hdr.ascq == 0x0a) - err = SCSI_DH_RETRY; - else if (sense_hdr.sense_key == UNIT_ATTENTION) + sense_hdr.asc == 0x04 && sense_hdr.ascq == 0x0a) { + transitioning_sense = true; + goto skip_rtpg; + } + /* + * Retry on any other UNIT ATTENTION occurred. + */ + if (sense_hdr.sense_key == UNIT_ATTENTION) err = SCSI_DH_RETRY; if (err == SCSI_DH_RETRY && pg->expiry != 0 && time_before(jiffies, pg->expiry)) { @@ -680,7 +687,11 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg) off = 8 + (desc[7] * 4); } + skip_rtpg: spin_lock_irqsave(&pg->lock, flags); + if (transitioning_sense) + pg->state = SCSI_ACCESS_STATE_TRANSITIONING; + sdev_printk(KERN_INFO, sdev, "%s: port group %02x state %c %s supports %c%c%c%c%c%c%c\n", ALUA_DH_NAME, pg->group_id, print_alua_state(pg->state), -- 2.20.1