X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=kernel%2FDocumentation%2Fscsi%2Fscsi_eh.txt;fp=kernel%2FDocumentation%2Fscsi%2Fscsi_eh.txt;h=37eca00796eeebf805afbbf1504753c1a0febec0;hb=52f993b8e89487ec9ee15a7fb4979e0f09a45b27;hp=8638f61c8c9db70d767302497d417be6c9a0a030;hpb=c189ccac5702322ed843fe17057035b7222a59b6;p=kvmfornfv.git diff --git a/kernel/Documentation/scsi/scsi_eh.txt b/kernel/Documentation/scsi/scsi_eh.txt index 8638f61c8..37eca0079 100644 --- a/kernel/Documentation/scsi/scsi_eh.txt +++ b/kernel/Documentation/scsi/scsi_eh.txt @@ -263,19 +263,23 @@ scmd->allowed. 3. scmd recovered ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd - - shost->host_failed-- - clear scmd->eh_eflags - scsi_setup_cmd_retry() - move from local eh_work_q to local eh_done_q LOCKING: none + CONCURRENCY: at most one thread per separate eh_work_q to + keep queue manipulation lockless 4. EH completes ACTION: scsi_eh_flush_done_q() retries scmds or notifies upper - layer of failure. + layer of failure. May be called concurrently but must have + a no more than one thread per separate eh_work_q to + manipulate the queue locklessly - scmd is removed from eh_done_q and scmd->eh_entry is cleared - if retry is necessary, scmd is requeued using scsi_queue_insert() - otherwise, scsi_finish_command() is invoked for scmd + - zero shost->host_failed LOCKING: queue or finish function performs appropriate locking