This has get_sectorsize have scsi-ml retry errors instead of driving them itself. Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx> --- drivers/scsi/sr.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index 8b28a8a28b45..cf1f498671f0 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c @@ -720,26 +720,25 @@ static void get_sectorsize(struct scsi_cd *cd) { unsigned char cmd[10]; unsigned char buffer[8]; - int the_result, retries = 3; + int the_result; int sector_size; struct request_queue *queue; + struct scsi_failure failures[] = { + { + .result = SCMD_FAILURE_ANY, + .allowed = 3, + }, + {}, + }; - do { - cmd[0] = READ_CAPACITY; - memset((void *) &cmd[1], 0, 9); - memset(buffer, 0, sizeof(buffer)); - - /* Do the command and wait.. */ - the_result = scsi_execute_req(cd->device, cmd, DMA_FROM_DEVICE, - buffer, sizeof(buffer), NULL, - SR_TIMEOUT, MAX_RETRIES, NULL, - NULL); - - retries--; - - } while (the_result && retries); - + cmd[0] = READ_CAPACITY; + memset((void *) &cmd[1], 0, 9); + memset(buffer, 0, sizeof(buffer)); + /* Do the command and wait.. */ + the_result = scsi_execute_req(cd->device, cmd, DMA_FROM_DEVICE, + buffer, sizeof(buffer), NULL, + SR_TIMEOUT, MAX_RETRIES, NULL, failures); if (the_result) { cd->capacity = 0x1fffff; sector_size = 2048; /* A guess, just in case */ -- 2.25.1