Received: by 2002:a17:90a:1609:0:0:0:0 with SMTP id n9csp855023pja; Wed, 1 Apr 2020 09:54:23 -0700 (PDT) X-Google-Smtp-Source: APiQypLl7jaZ4Cj8BJYeiT+8CgYMsEU2NucJvIsZaBySc27dm8a6Pa5tOsc5iFhVIhyggci+2BG5 X-Received: by 2002:aca:682:: with SMTP id 124mr3578020oig.69.1585760062826; Wed, 01 Apr 2020 09:54:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585760062; cv=none; d=google.com; s=arc-20160816; b=aLatAHEV5QoEDtpPFpgcnUUgnxiVJwQ1fb5Sz1nSVUqsm1V48t5k2/00doOYmRJd0Q UbIKBgy8ZsJ6KVctjnR8oLCwxu3UNfOvkVCGEGFZvJyyIzrX+MJO7rTcUdcD8raoziVH G/Q3WGuLrA4/xP166QJAPWUDlr1BKFrR6uv+oYmnIUwvZOFgd4S9jpfeFBHkgQvWLPd0 XfVIU2Ru986suwOvx+D3i8WNNC4A6ws5Q2pirPvj10Pq5gpZjjnfAHGFTUy5L9FQU6zf Y9v2uGObR+MVnPOGCAFX1lBkyVTVLV0X3ISTMYqMHKrt2hhEaXvw/pbxt7RDcPKD4tfG K+8w== 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=a+TTCJjW4XUwzoL8r04nb5Qna4xU5nGPWkS9lhs3yvI=; b=fjqS3g4j7YT7GrZZ19xmSbz0y6+OjUFGB6EyIFm6nDLuTPj4PWKUwBiSXEVp2sFWeH us0CVsRK2xa6vNU84KVNAB/ZcQ6s0GBtZhaM9kdU2kdUVAs+rwwAQQl7Wweo6fNgcRJ2 ZMW0Z+G+2B+x9rFDoMXDzcOgQX2dzvCWrNGhopIs/eR3sDJ65wvYpu68QLOLQyb1lcBh Ji8pl3An7USbE/WvQKAla/JhmJvue8qaKYA0zD3iH4ihrnD64Kue4fWY+YHgIf4FatkI oZkjnmnATZz/cj7mSwfLGoCP7NMYNEb8TnpHv1z3m3T+wWH8zuuowmKlku8xY0aOsAzE +zAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="dKm4QIn/"; 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 i1si1037676oto.72.2020.04.01.09.54.09; Wed, 01 Apr 2020 09:54:22 -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="dKm4QIn/"; 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 S2388222AbgDAQcU (ORCPT + 99 others); Wed, 1 Apr 2020 12:32:20 -0400 Received: from mail.kernel.org ([198.145.29.99]:58642 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733133AbgDAQcQ (ORCPT ); Wed, 1 Apr 2020 12:32:16 -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 9962F212CC; Wed, 1 Apr 2020 16:32:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585758736; bh=7mOO/1GKnXsj0qXC+PRMD1ZEMzw03xyoSr+lsy1aBGc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dKm4QIn/s1tdGfl447EOA8hdMGRnT7K3yGCAaNekUdID6f5P1IGaZTrpOqSJEVPM1 KJC+MNDN8qHCsRaxC1Vrr/LQFZulgIpIzX+Zqtx2hC0Bl4CfO4pcA/nv875LhJMrjN 0AK/h0ZYhmKHlkujTyvRemOXG59i9y5AGWmrR3YY= 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.4 58/91] scsi: sd: Fix optimal I/O size for devices that change reported values Date: Wed, 1 Apr 2020 18:17:54 +0200 Message-Id: <20200401161533.313453106@linuxfoundation.org> X-Mailer: git-send-email 2.26.0 In-Reply-To: <20200401161512.917494101@linuxfoundation.org> References: <20200401161512.917494101@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 @@ -2915,9 +2915,11 @@ static int sd_revalidate_disk(struct gen logical_to_bytes(sdp, sdkp->opt_xfer_blocks) >= PAGE_CACHE_SIZE) { 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));