|
@@ -821,9 +821,12 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * If we finished all bytes in the request we are done now.
|
|
|
+ * special case: failed zero length commands always need to
|
|
|
+ * drop down into the retry code. Otherwise, if we finished
|
|
|
+ * all bytes in the request we are done now.
|
|
|
*/
|
|
|
- if (!scsi_end_request(req, error, good_bytes, 0))
|
|
|
+ if (!(blk_rq_bytes(req) == 0 && error) &&
|
|
|
+ !scsi_end_request(req, error, good_bytes, 0))
|
|
|
return;
|
|
|
|
|
|
/*
|