Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp847939pja; Wed, 1 Apr 2020 09:46:57 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuccE9teApKDDaeb4ozQAcpi2O5dmv8n+ZpPNcwwsO+x+GJN9ufGSkhusxLdMJ2BLjAWb4u X-Received: by 2002:a9d:6c4c:: with SMTP id g12mr16482220otq.351.1585759617424; Wed, 01 Apr 2020 09:46:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585759617; cv=none; d=google.com; s=arc-20160816; b=mgQ/MLLpvPXtJB4DhwwgUMIvgKykWOK+WiKorlzjokrCF+o/ISx+ynENkAoXM77fll b0ZmCVNzYvWFDA5cLlffbRv40aWFDaCjE9UNj3SW+iZ9mR7DLDfoNJhYWt9dkfX638NJ VhU5SWAVQTRLbkyJSKGqnpCpDR2NK4/FjK/FNVlHqLjVgI2agHHLueG9Bb3OyRDPp27p T1MuZV+jVf3h7JqMNNYqwP99HCDSz578NZVZxXF1jYd0J3hYpy8KM51T1OQK99KOyXMT gZgQN7nmr3ZHXUxblErR9CEhDVEX1VgJkaLIn9LUz+qBLfH3nRmdBcYETSgVFXDyeIQZ SGTA== 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=v3xKI1PKpTACtsY7IS7qobAZhRct4NnidVoKUKbVFHE=; b=zG5xw4fVQQp2pTmF6nflO9XshyZwRQoIfUOLghri2jCqr8knOmTFMV1TTC5UBJ6xCT Gq2wAhPfdBe0VDBcz329orDx6sdWihPFtY9TelOJd/gpEQg78dY0BRtG0/+QjhysE2jl l6cEDMP7Ts+/Wcbx2FrxnKv7NM/3abnxmfOGmJ120c1Tlj4qovIls16kBiMtQN8B1ib/ bXqEigXITaX38Wn3x6GSSABlczTtlqEchJ8Ws0gGJoJIM0a9eEzvznLkFzI3GFnWTk4z 0qNzJ/1hM6ZPsmJaKztrewJo/JVAEYqgrvca3wbgbRIyfodWWkU2uYh+DLu6FNUGJFT7 KIag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ooLxLdsJ; 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 141si1022443oii.44.2020.04.01.09.46.45; Wed, 01 Apr 2020 09:46:57 -0700 (PDT) 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=ooLxLdsJ; 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 S2389782AbgDAQox (ORCPT + 99 others); Wed, 1 Apr 2020 12:44:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:45968 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388037AbgDAQow (ORCPT ); Wed, 1 Apr 2020 12:44:52 -0400 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 4928A206E9; Wed, 1 Apr 2020 16:44:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585759491; bh=jD/A6vXxrAuH6HnI+HbC6Unssbw6b5eYu6JLroXNTL4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ooLxLdsJmRKYCWKcDrjpsLjTS9nmoL12F/jA0gkYMfMrfquKBheXPX3M9E6+BFWdo aJZTHaap/xHLMqt7im+bdjz61xXJS57podehb3LuZ9bjI7Rp2Vfix7Eao7wONW8ZRo TPnP1ezGvQ6n0yaBFakBkGHBstnQccJBVbXL+2kw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Bryan Gurney , Bernhard Sulzer , "Martin K. Petersen" Subject: [PATCH 4.14 096/148] scsi: sd: Fix optimal I/O size for devices that change reported values Date: Wed, 1 Apr 2020 18:18:08 +0200 Message-Id: <20200401161602.116006124@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200401161552.245876366@linuxfoundation.org> References: <20200401161552.245876366@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: Martin K. Petersen commit ea697a8bf5a4161e59806fab14f6e4a46dc7dcb0 upstream. Some USB bridge devices will return a default set of characteristics during initialization. And then, once an attached drive has spun up, substitute the actual parameters reported by the drive. According to the SCSI spec, the device should return a UNIT ATTENTION in case any reported parameters change. But in this case the change is made silently after a small window where default values are reported. Commit a83da8a4509d ("scsi: sd: Optimal I/O size should be a multiple of physical block size") validated the reported optimal I/O size against the physical block size to overcome problems with devices reporting nonsensical transfer sizes. However, this validation did not account for the fact that aforementioned devices will return default values during a brief window during spin-up. The subsequent change in reported characteristics would invalidate the checking that had previously been performed. Unset a previously configured optimal I/O size should the sanity checking fail on subsequent revalidate attempts. Link: https://lore.kernel.org/r/33fb522e-4f61-1b76-914f-c9e6a3553c9b@gmail.com Cc: Bryan Gurney Cc: Reported-by: Bernhard Sulzer Tested-by: Bernhard Sulzer Signed-off-by: Martin K. Petersen Signed-off-by: Greg Kroah-Hartman --- drivers/scsi/sd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -3212,9 +3212,11 @@ static int sd_revalidate_disk(struct gen if (sd_validate_opt_xfer_size(sdkp, dev_max)) { q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks); rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks); - } else + } else { + q->limits.io_opt = 0; rw_max = min_not_zero(logical_to_sectors(sdp, dev_max), (sector_t)BLK_DEF_MAX_SECTORS); + } /* Do not exceed controller limit */ rw_max = min(rw_max, queue_max_hw_sectors(q));