Przeglądaj źródła

[PATCH] libata: determine the err_mask directly in atapi_packet_task()

  - set qc->err_mask directly when we found the error
  - remove the code to determine err_mask from device status

Signed-off-by: Albert Lee <albertcc@tw.ibm.com>

============
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Albert Lee 19 lat temu
rodzic
commit
d8fe452b3e
1 zmienionych plików z 7 dodań i 6 usunięć
  1. 7 6
      drivers/scsi/libata-core.c

+ 7 - 6
drivers/scsi/libata-core.c

@@ -4083,13 +4083,17 @@ static void atapi_packet_task(void *_data)
 
 
 	/* sleep-wait for BSY to clear */
 	/* sleep-wait for BSY to clear */
 	DPRINTK("busy wait\n");
 	DPRINTK("busy wait\n");
-	if (ata_busy_sleep(ap, ATA_TMOUT_CDB_QUICK, ATA_TMOUT_CDB))
-		goto err_out_status;
+	if (ata_busy_sleep(ap, ATA_TMOUT_CDB_QUICK, ATA_TMOUT_CDB)) {
+		qc->err_mask |= AC_ERR_ATA_BUS;
+		goto err_out;
+	}
 
 
 	/* make sure DRQ is set */
 	/* make sure DRQ is set */
 	status = ata_chk_status(ap);
 	status = ata_chk_status(ap);
-	if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ)
+	if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ) {
+		qc->err_mask |= AC_ERR_ATA_BUS;
 		goto err_out;
 		goto err_out;
+	}
 
 
 	/* send SCSI cdb */
 	/* send SCSI cdb */
 	DPRINTK("send cdb\n");
 	DPRINTK("send cdb\n");
@@ -4121,10 +4125,7 @@ static void atapi_packet_task(void *_data)
 
 
 	return;
 	return;
 
 
-err_out_status:
-	status = ata_chk_status(ap);
 err_out:
 err_out:
-	qc->err_mask |= __ac_err_mask(status);
 	ata_poll_qc_complete(qc);
 	ata_poll_qc_complete(qc);
 }
 }