• C
    [SCSI] Allow FC LLD to fast-fail scsi eh by introducing new eh return · 2f2eb587
    Christof Schmitt 提交于
    If the scsi eh is running and then a FC LLD calls
    fc_remote_port_delete, the SCSI commands sent from the eh will fail.
    To prevent this, a FC LLD can call fc_block_scsi_eh from the eh
    callback, blocking the eh thread until the dev_loss_tmo fires or the
    remote port is available again.
    
    If (e.g. for a multipathing setup) the dev_loss_tmo is set to a very
    large value, thus preventing the scsi device removal , the scsi eh can
    block for a long time. For multipathing, the fast_io_fail_tmo is then
    set to a low value to detect path problems sooner.
    
    This patch introduces a new return code FAST_IO_FAIL. The function
    fc_block_scsi_eh now returns FAST_IO_FAIL when the fast_io_fail_tmo
    fires. This indicates that the LLD terminated all pending I/O requests
    and there are no more pending SCSI commands for the scsi eh to wait
    for. This return code can be passed back to the scsi eh to stop the
    escalation and finish the recovery process for this device.
    Signed-off-by: NChristof Schmitt <christof.schmitt@de.ibm.com>
    Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
    2f2eb587
scsi_transport_fc.c 117.7 KB