Tejun Heo wrote:
Hello, fellow SCSI/ATA developers. This is the first draft of SCSI EH document. This document tries to describe how SCSI EH works and what choirs should be done to maintain SCSI midlayer integrity. It's intended that this document can be used as reference for implementing either fine-grained EH callbacks or single eh_strategy_handler() callback. I'm pretty sure that I've screwed up in (hopefully) several places, so please correct me. Also, I have several places where I'm not sure or have questions, those are marked with *VERIFY* and *QUESTION* respectively. If you know the answer, please let me know.
Seems sane to me at first glance.
- EH_RESET_TIMER This indicates that more time is required to finish the command. Timer is restarted. This action is counted as a retry and only allowed scmd->allowed + 1(!) times. Once the limit is reached, EH_NOT_HANDLED action is taken. *NOTE* This action is racy as the LLDD could finish the scmd after the timeout has expired but before it's added back. In such cases, scsi_done() would think that timeout has occurred and return without doing anything. We lose completion and the command will time out again.
hmmmm
[2-2-2] Post hostt->eh_strategy_handler() SCSI midlayer conditions The following conditions must be true on exit from the handler. - shost->host_failed is zero. - Each scmd's eh_eflags field is cleared. - Each scmd is in such a state that scsi_setup_cmd_retry() on the scmd doesn't make any difference. - shost->eh_cmd_q is cleared. - Each scmd->eh_entry is cleared. (*VERIFY* This is currently not necessary for correct operation, but keep them cleared anyway for consistency.)
Both all the list-heads need to be cleared, otherwise there may be list corruption next time the element is added to the list_head.
Jeff - : 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