Skip to content

Commit

Permalink
[PATCH] libata-dev: Use new AC_ERR_* flags
Browse files Browse the repository at this point in the history
  - Use new AC_ERR_* flags as done in Tejun's patches
  - In ata_qc_timeout(), replace ac_err_mask(drv_stat) with AC_ERR_TIMEOUT.
    This makes time out handler always report error to upper layer.
    Otherwise if the drv_stat looks good, libata might falsely report OK to the upper layer.

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

===
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
  • Loading branch information
Albert Lee authored and Jeff Garzik committed Feb 9, 2006
1 parent 20ea079 commit 555a896
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -3315,7 +3315,7 @@ static int ata_pio_first_block(struct ata_port *ap)
/* sleep-wait for BSY to clear */
DPRINTK("busy wait\n");
if (ata_busy_sleep(ap, ATA_TMOUT_DATAOUT_QUICK, ATA_TMOUT_DATAOUT)) {
qc->err_mask |= AC_ERR_ATA_BUS;
qc->err_mask |= AC_ERR_TIMEOUT;
ap->hsm_task_state = HSM_ST_TMOUT;
goto err_out;
}
Expand All @@ -3324,7 +3324,7 @@ static int ata_pio_first_block(struct ata_port *ap)
status = ata_chk_status(ap);
if ((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ) {
/* device status error */
qc->err_mask |= AC_ERR_ATA_BUS;
qc->err_mask |= AC_ERR_HSM;
ap->hsm_task_state = HSM_ST_ERR;
goto err_out;
}
Expand Down Expand Up @@ -3684,7 +3684,7 @@ static void ata_qc_timeout(struct ata_queued_cmd *qc)
ap->hsm_task_state = HSM_ST_IDLE;

/* complete taskfile transaction */
qc->err_mask |= ac_err_mask(drv_stat);
qc->err_mask |= AC_ERR_TIMEOUT;
break;
}

Expand Down Expand Up @@ -4365,7 +4365,7 @@ inline unsigned int ata_host_intr (struct ata_port *ap,
/* check device status */
if (unlikely((status & (ATA_BUSY | ATA_DRQ)) != ATA_DRQ)) {
/* Wrong status. Let EH handle this */
qc->err_mask |= AC_ERR_ATA_BUS;
qc->err_mask |= AC_ERR_HSM;
ap->hsm_task_state = HSM_ST_ERR;
goto fsm_start;
}
Expand Down Expand Up @@ -4394,7 +4394,7 @@ inline unsigned int ata_host_intr (struct ata_port *ap,
/* ATA PIO protocol */
if (unlikely((status & ATA_DRQ) == 0)) {
/* handle BSY=0, DRQ=0 as error */
qc->err_mask |= AC_ERR_ATA_BUS;
qc->err_mask |= AC_ERR_HSM;
ap->hsm_task_state = HSM_ST_ERR;
goto fsm_start;
}
Expand All @@ -4416,7 +4416,7 @@ inline unsigned int ata_host_intr (struct ata_port *ap,
case HSM_ST_LAST:
if (unlikely(status & ATA_DRQ)) {
/* handle DRQ=1 as error */
qc->err_mask |= AC_ERR_ATA_BUS;
qc->err_mask |= AC_ERR_HSM;
ap->hsm_task_state = HSM_ST_ERR;
goto fsm_start;
}
Expand Down

0 comments on commit 555a896

Please sign in to comment.