Patch "scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state" has been added to the 4.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state

to the 4.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-scsi_transport_srp-don-t-block-target-in-srp_po.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c7889d5dfcd6a2aa476d0826f6d16e482ec5158a
Author: Martin Wilck <mwilck@xxxxxxxx>
Date:   Thu Apr 1 11:11:05 2021 +0200

    scsi: scsi_transport_srp: Don't block target in SRP_PORT_LOST state
    
    [ Upstream commit 5cd0f6f57639c5afbb36100c69281fee82c95ee7 ]
    
    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@xxxxxxxx
    Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx>
    Signed-off-by: Martin Wilck <mwilck@xxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c
index a0e35028ebda..118e764108f7 100644
--- a/drivers/scsi/scsi_transport_srp.c
+++ b/drivers/scsi/scsi_transport_srp.c
@@ -555,7 +555,7 @@ int srp_reconnect_rport(struct srp_rport *rport)
 	res = mutex_lock_interruptible(&rport->mutex);
 	if (res)
 		goto out;
-	if (rport->state != SRP_RPORT_FAIL_FAST)
+	if (rport->state != SRP_RPORT_FAIL_FAST && rport->state != SRP_RPORT_LOST)
 		/*
 		 * sdev state must be SDEV_TRANSPORT_OFFLINE, transition
 		 * to SDEV_BLOCK is illegal. Calling scsi_target_unblock()



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux