• Martin Wilck's avatar
    scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state · 5cd0f6f5
    Martin Wilck authored
    rport_dev_loss_timedout() sets the rport state to SRP_PORT_LOST and the
    SCSI target state to SDEV_TRANSPORT_OFFLINE. If this races with
    srp_reconnect_work(), a warning is printed:
    
    Mar 27 18:48:07 ictm1604s01h4 kernel: dev_loss_tmo expired for SRP port-18:1 / host18.
    Mar 27 18:48:07 ictm1604s01h4 kernel: ------------[ cut here ]------------
    Mar 27 18:48:07 ictm1604s01h4 kernel: scsi_internal_device_block(18:0:0:100) failed: ret = -22
    Mar 27 18:48:07 ictm1604s01h4 kernel: Call Trace:
    Mar 27 18:48:07 ictm1604s01h4 kernel:  ? scsi_target_unblock+0x50/0x50 [scsi_mod]
    Mar 27 18:48:07 ictm1604s01h4 kernel:  starget_for_each_device+0x80/0xb0 [scsi_mod]
    Mar 27 18:48:07 ictm1604s01h4 kernel:  target_block+0x24/0x30 [scsi_mod]
    Mar 27 18:48:07 ictm1604s01h4 kernel:  device_for_each_child+0x57/0x90
    Mar 27 18:48:07 ictm1604s01h4 kernel:  srp_reconnect_rport+0xe4/0x230 [scsi_transport_srp]
    Mar 27 18:48:07 ictm1604s01h4 kernel:  srp_reconnect_work+0x40/0xc0 [scsi_transport_srp]
    
    Avoid this by not trying to block targets for rports in SRP_PORT_LOST
    state.
    
    Link: https://lore.kernel.org/r/20210401091105.8046-1-mwilck@suse.comReviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarMartin Wilck <mwilck@suse.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    5cd0f6f5
scsi_transport_srp.c 24.5 KB