diff options
Diffstat (limited to 'drivers/scsi/sd.c')
| -rw-r--r-- | drivers/scsi/sd.c | 26 | 
1 files changed, 11 insertions, 15 deletions
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 55310dbc10a..4970ae4a62d 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1167,23 +1167,19 @@ sd_spinup_disk(struct scsi_disk *sdkp)  		/*  		 * The device does not want the automatic start to be issued.  		 */ -		if (sdkp->device->no_start_on_add) { +		if (sdkp->device->no_start_on_add)  			break; -		} - -		/* -		 * If manual intervention is required, or this is an -		 * absent USB storage device, a spinup is meaningless. -		 */ -		if (sense_valid && -		    sshdr.sense_key == NOT_READY && -		    sshdr.asc == 4 && sshdr.ascq == 3) { -			break;		/* manual intervention required */ -		/* -		 * Issue command to spin up drive when not ready -		 */ -		} else if (sense_valid && sshdr.sense_key == NOT_READY) { +		if (sense_valid && sshdr.sense_key == NOT_READY) { +			if (sshdr.asc == 4 && sshdr.ascq == 3) +				break;	/* manual intervention required */ +			if (sshdr.asc == 4 && sshdr.ascq == 0xb) +				break;	/* standby */ +			if (sshdr.asc == 4 && sshdr.ascq == 0xc) +				break;	/* unavailable */ +			/* +			 * Issue command to spin up drive when not ready +			 */  			if (!spintime) {  				sd_printk(KERN_NOTICE, sdkp, "Spinning up disk...");  				cmd[0] = START_STOP;  |