|
@@ -733,6 +733,14 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
|
|
|
scsi_next_command(cmd);
|
|
|
return;
|
|
|
}
|
|
|
+ } else if (blk_rq_bytes(req) == 0 && result && !sense_deferred) {
|
|
|
+ /*
|
|
|
+ * Certain non BLOCK_PC requests are commands that don't
|
|
|
+ * actually transfer anything (FLUSH), so cannot use
|
|
|
+ * good_bytes != blk_rq_bytes(req) as the signal for an error.
|
|
|
+ * This sets the error explicitly for the problem case.
|
|
|
+ */
|
|
|
+ error = __scsi_error_from_host_byte(cmd, result);
|
|
|
}
|
|
|
|
|
|
/* no bidi support for !REQ_TYPE_BLOCK_PC yet */
|