scsi_transport_fc: set scsi_target_id upon rescan
PATCH 1/1 scsi_transport_fc: set scsi_target_id upon rescan
From: Hannes Reinecke <[email protected]>
When an rport is found in the bindings array there is no guarantee that it had been a target port, so we need to call fc_remote_port_rolechg() here to ensure the scsi_target_id is set correctly. Otherwise the port will never be scanned.
--- drivers/scsi/scsi_transport_fc.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
drivers/scsi/scsi_transport_fc.c +1 -10
@@ -2876,7 +2876,6 @@ fc_remote_port_add(struct Scsi_Host *shost, int channel,memcpy (&rport->port_name, &ids->port_name,sizeof (rport->port_name)); rport->port_id = ids->port_id; - rport->roles = ids->roles; rport->port_state =FC_PORTSTATE_ONLINE ; rport->flags &= ~FC_RPORT_FAST_FAIL_TIMEDOUT ;
@@ -2885,15 +2884,7 @@ fc_remote_port_add(struct Scsi_Host *shost, int channel, fci->f->dd_fcrport_size);spin_unlock_irqrestore (shost->host_lock, flags); -if (ids->roles &FC_PORT_ROLE_FCP_TARGET ) { -scsi_target_unblock (&rport->dev,SDEV_RUNNING ); - -/* initiate a scan of the target */ -spin_lock_irqsave (shost->host_lock, flags); - rport->flags |=FC_RPORT_SCAN_PENDING ; -scsi_queue_work (shost, &rport->scan_work); -spin_unlock_irqrestore (shost->host_lock, flags); - } +fc_remote_port_rolechg (rport, ids->roles);return rport; } }
Signature · 1 line
2.12.3
Looks good,
Signature · 6 lines
Johannes Thumshirn Storage [email protected] +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850
Quoted 7 lines · Hannes Reinecke
From: Hannes Reinecke <[email protected]>
When an rport is found in the bindings array there is no guarantee that it had been a target port, so we need to call
fc_remote_port_rolechg()here to ensure thescsi_target_idis set correctly. Otherwise the port will never be scanned.
Quoted 5 lines
Signed-off-by Hannes Reinecke <[email protected]>--- drivers/scsi/scsi_transport_fc.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-)
Verified that port is scanned after applying this patch.
Martin K. Petersen
AppliedHannes,
Quoted 4 lines
When an rport is found in the bindings array there is no guarantee that it had been a target port, so we need to call
fc_remote_port_rolechg()here to ensure thescsi_target_idis set correctly. Otherwise the port will never be scanned.
Applied to 4.14/scsi-fixes. Thank you!
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering