Revert "scsi: sd: usb_storage: uas: Access media prior to querying device properties"

This reverts commit b73dd5f999 which is
commit 321da3dc1f upstream.

It is known to cause problems and has asked to be dropped.

Link: https://lore.kernel.org/r/yq1frvvpymp.fsf@ca-mkp.ca.oracle.com
Cc: Tasos Sahanidis <tasos@tasossah.com>
Cc: Ewan D. Milne <emilne@redhat.com>
Cc: Bart Van Assche <bvanassche@acm.org>
Cc: Tasos Sahanidis <tasos@tasossah.com>
Cc: Martin K. Petersen <martin.petersen@oracle.com>
Cc: James Bottomley <jejb@linux.ibm.com>
Cc: Sasha Levin <sashal@kernel.org>
Reported-by: John David Anglin <dave.anglin@bell.net>
Reported-by: Cyril Brulebois <kibi@debian.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Greg Kroah-Hartman 2024-04-11 09:24:48 +02:00
parent cf0650adb6
commit f1465ff4c8
4 changed files with 1 additions and 40 deletions

View File

@ -3286,24 +3286,6 @@ static bool sd_validate_opt_xfer_size(struct scsi_disk *sdkp,
return true;
}
static void sd_read_block_zero(struct scsi_disk *sdkp)
{
unsigned int buf_len = sdkp->device->sector_size;
char *buffer, cmd[10] = { };
buffer = kmalloc(buf_len, GFP_KERNEL);
if (!buffer)
return;
cmd[0] = READ_10;
put_unaligned_be32(0, &cmd[2]); /* Logical block address 0 */
put_unaligned_be16(1, &cmd[7]); /* Transfer 1 logical block */
scsi_execute_cmd(sdkp->device, cmd, REQ_OP_DRV_IN, buffer, buf_len,
SD_TIMEOUT, sdkp->max_retries, NULL);
kfree(buffer);
}
/**
* sd_revalidate_disk - called the first time a new disk is seen,
* performs disk spin up, read_capacity, etc.
@ -3343,13 +3325,7 @@ static int sd_revalidate_disk(struct gendisk *disk)
*/
if (sdkp->media_present) {
sd_read_capacity(sdkp, buffer);
/*
* Some USB/UAS devices return generic values for mode pages
* until the media has been accessed. Trigger a READ operation
* to force the device to populate mode pages.
*/
if (sdp->read_before_ms)
sd_read_block_zero(sdkp);
/*
* set the default to rotational. All non-rotational devices
* support the block characteristics VPD page, which will

View File

@ -179,13 +179,6 @@ static int slave_configure(struct scsi_device *sdev)
*/
sdev->use_192_bytes_for_3f = 1;
/*
* Some devices report generic values until the media has been
* accessed. Force a READ(10) prior to querying device
* characteristics.
*/
sdev->read_before_ms = 1;
/*
* Some devices don't like MODE SENSE with page=0x3f,
* which is the command used for checking if a device

View File

@ -876,13 +876,6 @@ static int uas_slave_configure(struct scsi_device *sdev)
if (devinfo->flags & US_FL_CAPACITY_HEURISTICS)
sdev->guess_capacity = 1;
/*
* Some devices report generic values until the media has been
* accessed. Force a READ(10) prior to querying device
* characteristics.
*/
sdev->read_before_ms = 1;
/*
* Some devices don't like MODE SENSE with page=0x3f,
* which is the command used for checking if a device

View File

@ -204,7 +204,6 @@ struct scsi_device {
unsigned use_10_for_rw:1; /* first try 10-byte read / write */
unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */
unsigned set_dbd_for_ms:1; /* Set "DBD" field in mode sense */
unsigned read_before_ms:1; /* perform a READ before MODE SENSE */
unsigned no_report_opcodes:1; /* no REPORT SUPPORTED OPERATION CODES */
unsigned no_write_same:1; /* no WRITE SAME command */
unsigned use_16_for_rw:1; /* Use read/write(16) over read/write(10) */