===== scsi_error.c 1.60 vs edited ===== --- 1.60/drivers/scsi/scsi_error.c Thu Jul 31 07:32:18 2003 +++ edited/scsi_error.c Mon Aug 4 14:20:24 2003 @@ -1285,7 +1285,12 @@ maybe_retry: - if ((++scmd->retries) < scmd->allowed) { + /* we requeue for retry because the error was retryable, and + * the request was not marked fast fail. Note that above, + * even if the request is marked fast fail, we still requeue + * for queue congestion conditions (QUEUE_FULL or BUSY) */ + if ((++scmd->retries) < scmd->allowed + && !blk_noretry_request(scmd->request)) { return NEEDS_RETRY; } else { /* ===== scsi_lib.c 1.108 vs edited ===== --- 1.108/drivers/scsi/scsi_lib.c Sat Aug 2 10:18:20 2003 +++ edited/scsi_lib.c Mon Aug 4 14:26:46 2003 @@ -497,6 +497,13 @@ struct request *req = cmd->request; unsigned long flags; + /* If failfast is enabled, override the number of completed + * sectors to make sure the entire request is finished right + * now */ + if(blk_noretry_request(req)) { + sectors = req->hard_nr_sectors; + } + /* * If there are blocks left over at the end, set up the command * to queue the remainder of them.