The following series of three patches simplifies scsi_io_completion() and eliminates scsi_end_request() -- its code is moved into scsi_io_completion() and streamlined. The changes made here are based on an observation made by James, that all the valid "retry" paths in scsi_io_completion() work by calling scsi_requeue_command(). The paths which call scsi_end_request() with the requeue argument set are all wrong; they should simply allow the request to fail. When a request fails, whether or not it had to be broken up into several low-level commands is immaterial. If a request that isn't broken up fails, the whole thing is over and done with. So if an intermediate command for a request that was broken up fails, it likewise should cause the entire remaining part of the request to end. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html