On Mon, 2008-09-29 at 17:11 -0400, Alan Stern wrote: > This patch (as1142) consolidates some repetitious code in > scsi_io_completion(). Multiple calls to scsi_end_request() and to > scsi_requeue_command() are combined together and moved to the end of > the function. > > This is simple mechanical code motion, with no change in behavior. I don't really think this is the right approach, since the retry case needs to be split apart again. The only time scsi_requeue_command() needs to be called is if the request completes successfully but has leftovers. The reason is that the command will be different next time around, so it has to be re-prepared. In all the other cases, the same command can be reused. This will have the knock on effect of not resetting the timers or the counters, so it has to be done carefully. Of the three requeue cases: UNIT_ATTENTION needs immediate retry NOT_READY needs delayed retry ILLEGAL_REQUEST with cmd switch (assuming we still do it) needs immediate retry DID_RESET is arguable either way, but probably needs delayed. immediate requeue is done by: scsi_queue_insert(cmd, SCSI_MLQUEUE_EH_RETRY); And delayed by scsi_queue_insert(cmd, SCSI_MLQUEUE_DEVICE_BUSY); James -- 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