diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 0c2c73b..d92f98c 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -1223,19 +1223,31 @@ static void scsi_eh_offline_sdevs(struct list_head *work_q, */ int scsi_noretry_cmd(struct scsi_cmnd *scmd) { + printk("XXX scmd->result=0x%x ff_t=%d ff_dev=%d ff_drv=%d\n", + scmd->result, blk_failfast_transport(scmd->request), + blk_failfast_dev(scmd->request), + blk_failfast_driver(scmd->request)); + switch (host_byte(scmd->result)) { case DID_OK: + printk("XXX DID_OK\n"); break; case DID_BUS_BUSY: + printk("XXX DID_BUS_BUSY, returning ff_t\n"); return blk_failfast_transport(scmd->request); case DID_PARITY: + printk("XXX DID_PARITY, returning ff_dev\n"); return blk_failfast_dev(scmd->request); case DID_ERROR: + printk("XXX DID_ERROR\n"); if (msg_byte(scmd->result) == COMMAND_COMPLETE && - status_byte(scmd->result) == RESERVATION_CONFLICT) + status_byte(scmd->result) == RESERVATION_CONFLICT) { + printk("XXX RESERVATION_CONFLICT\n"); return 0; + } /* fall through */ case DID_SOFT_ERROR: + printk("XXX DID_SOFT_ERROR, returning ff_drv\n"); return blk_failfast_driver(scmd->request); } @@ -1245,9 +1257,11 @@ int scsi_noretry_cmd(struct scsi_cmnd *scmd) * assume caller has checked sense and determinted * the check condition was retryable. */ + printk("XXX CHECK_CONDITION, returning ff_dev\n"); return blk_failfast_dev(scmd->request); } + printk("XXX returning 0\n"); return 0; }