void scsi_unjam_host (struct Scsi_Host * shost);
When we come in here, we *know* that all commands on the bus have either completed, failed or timed out. we also know that no further commands are being sent to the host, so things are relatively quiet and we have freedom to fiddle with things as we wish.
This is only the *default* implementation. it is possible for individual drivers to supply their own version of this function, and if the maintainer wishes to do this, it is strongly suggested that this function be taken as a template and modified. this function was designed to correctly handle problems for about 95% of the different cases out there, and it should always provide at least a reasonable amount of error recovery.
Any command marked 'failed' or 'timeout' must eventually have scsi_finish_cmd called for it. we do all of the retry stuff here, so when we restart the host after we return it should have an empty queue.