Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp3287226ybb; Tue, 31 Mar 2020 02:08:33 -0700 (PDT) X-Google-Smtp-Source: ADFU+vu6N2VEKcW92fRYWAYqSxb2gULD5owRX7U6aklUIzQ/3dgndM4pTyiBOO0N4QH9jOvSBpxq X-Received: by 2002:a05:6830:d2:: with SMTP id x18mr12706551oto.273.1585645713048; Tue, 31 Mar 2020 02:08:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585645713; cv=none; d=google.com; s=arc-20160816; b=aCO6faocmZHUaCaNDO8iXPk5kLu8DbZYE3EUVdcXeygZnf62tHZtZ1xSeO6X1apV6Z 8IZBbo8/koyKRDnKcE5a/NJGOzHoGYp86RTH+skEskBNDfryKvoWOFXLC1QF3+PY2N6k viwjPe8+zQyG42Zw9xQF9KqrBU35HoQ74XNQ9uVi7A0lQMUE8NZOmTZ1N+E6Y6cKS/41 7f/jg2T5bDj2+fVwGFwqzUlDnalQ1z688lcQCbfc/4UwTu6Usgx7M885a9e3WO3UiEGj ZPJwUlaGwlc+fKV6hGdwQuevg/npFhjgFv/h6P8yaIYzIvYQbppjt1R7ZXQoQJNk4vky kGBQ== 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=A0LOyR9bK2P4c2rNzbHlZdajbnmkEL4z/gwfS199qPM=; b=MnBUmxfwAVg8QsYsVJc+7yKAKPItlxfpamMHvBkVi7ghvvykGOoW25qfZHf5/vJDS1 06ywG/Vq+4bf7HS61hiG1382s1mJcl5FlhTzk1zikuoiYKQvGm6J3qdTh0Rgpb061HZG v85Gt1fcUK3xX1k+ysIxU8PLq5l1Eqo8mTkx8xKf55U7dg/MlU51HjN6qvG0HQRtxYik RnQT2k+vF7dA7ZZ9bHttVzIh9TGhOqriIptGAVGB3KpEK+FDXtRt/LaP0lo2d2fGoLSH QVLujr40N8erNpLungubWeTIEgGKsfjJWyoUQkaMnUfMKk8UTG2bkLvbj4mNEDUyLcqR rfmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ZEJYZpgZ; 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 l22si5564434otd.53.2020.03.31.02.08.20; Tue, 31 Mar 2020 02:08:33 -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=ZEJYZpgZ; 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 S1731185AbgCaJHG (ORCPT + 99 others); Tue, 31 Mar 2020 05:07:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:48546 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730666AbgCaJG4 (ORCPT ); Tue, 31 Mar 2020 05:06:56 -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 ACC3120675; Tue, 31 Mar 2020 09:06:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585645616; bh=8kvesJQdmcKceXcBaFDnyhVeYcYpRlzrJivzrwLtwbE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZEJYZpgZ+s+AhTDmfI7TZqARLQxxPwZ94nAcuETfBOXT2W747oUEBWUWejkyZo19A /ZF4Bw2A9CLKMJbnnWyyLAxq2ZdUIHeaKnRMnV6LRwaqPKGHW1VUK1DR2VNSuTKbLF TaOom/poV09h5UXt/byM9pmmZddPRtrKehfknaDg= 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 5.5 107/170] scsi: sd: Fix optimal I/O size for devices that change reported values Date: Tue, 31 Mar 2020 10:58:41 +0200 Message-Id: <20200331085435.564769671@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200331085423.990189598@linuxfoundation.org> References: <20200331085423.990189598@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 @@ -3181,9 +3181,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));