提交 33dd6f92 编写于 作者: M Matthew Wilcox 提交者: James Bottomley

[SCSI] sd: Don't try to spin up drives that are connected to an inactive port

We currently try to spin up drives connected to standby and unavailable
ports.  This will never succeed and wastes a lot of time.  Fail quickly
if the sense data reports the port is in standby or unavailable state.
Reported-by: NNarayanan Rengarajan <narayanan.rengarajan@hp.com>
Tested-by: NNarayanan Rengarajan <narayanan.rengarajan@hp.com>
Signed-off-by: NMatthew Wilcox <willy@linux.intel.com>
Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
上级 559595a9
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册