aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/scsi/zfcp_scsi.c')
-rw-r--r--drivers/s390/scsi/zfcp_scsi.c22
1 files changed, 4 insertions, 18 deletions
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c
index b6177ad2d5bf..3ff726afafc6 100644
--- a/drivers/s390/scsi/zfcp_scsi.c
+++ b/drivers/s390/scsi/zfcp_scsi.c
@@ -491,21 +491,6 @@ static void zfcp_set_rport_dev_loss_tmo(struct fc_rport *rport, u32 timeout)
491} 491}
492 492
493/** 493/**
494 * zfcp_scsi_dev_loss_tmo_callbk - Free any reference to rport
495 * @rport: The rport that is about to be deleted.
496 */
497static void zfcp_scsi_dev_loss_tmo_callbk(struct fc_rport *rport)
498{
499 struct zfcp_port *port;
500
501 write_lock_irq(&zfcp_data.config_lock);
502 port = rport->dd_data;
503 if (port)
504 port->rport = NULL;
505 write_unlock_irq(&zfcp_data.config_lock);
506}
507
508/**
509 * zfcp_scsi_terminate_rport_io - Terminate all I/O on a rport 494 * zfcp_scsi_terminate_rport_io - Terminate all I/O on a rport
510 * @rport: The FC rport where to teminate I/O 495 * @rport: The FC rport where to teminate I/O
511 * 496 *
@@ -516,9 +501,12 @@ static void zfcp_scsi_dev_loss_tmo_callbk(struct fc_rport *rport)
516static void zfcp_scsi_terminate_rport_io(struct fc_rport *rport) 501static void zfcp_scsi_terminate_rport_io(struct fc_rport *rport)
517{ 502{
518 struct zfcp_port *port; 503 struct zfcp_port *port;
504 struct Scsi_Host *shost = rport_to_shost(rport);
505 struct zfcp_adapter *adapter =
506 (struct zfcp_adapter *)shost->hostdata[0];
519 507
520 write_lock_irq(&zfcp_data.config_lock); 508 write_lock_irq(&zfcp_data.config_lock);
521 port = rport->dd_data; 509 port = zfcp_get_port_by_wwpn(adapter, rport->port_name);
522 if (port) 510 if (port)
523 zfcp_port_get(port); 511 zfcp_port_get(port);
524 write_unlock_irq(&zfcp_data.config_lock); 512 write_unlock_irq(&zfcp_data.config_lock);
@@ -550,7 +538,6 @@ static void zfcp_scsi_rport_register(struct zfcp_port *port)
550 return; 538 return;
551 } 539 }
552 540
553 rport->dd_data = port;
554 rport->maxframe_size = port->maxframe_size; 541 rport->maxframe_size = port->maxframe_size;
555 rport->supported_classes = port->supported_classes; 542 rport->supported_classes = port->supported_classes;
556 port->rport = rport; 543 port->rport = rport;
@@ -663,7 +650,6 @@ struct fc_function_template zfcp_transport_functions = {
663 .reset_fc_host_stats = zfcp_reset_fc_host_stats, 650 .reset_fc_host_stats = zfcp_reset_fc_host_stats,
664 .set_rport_dev_loss_tmo = zfcp_set_rport_dev_loss_tmo, 651 .set_rport_dev_loss_tmo = zfcp_set_rport_dev_loss_tmo,
665 .get_host_port_state = zfcp_get_host_port_state, 652 .get_host_port_state = zfcp_get_host_port_state,
666 .dev_loss_tmo_callbk = zfcp_scsi_dev_loss_tmo_callbk,
667 .terminate_rport_io = zfcp_scsi_terminate_rport_io, 653 .terminate_rport_io = zfcp_scsi_terminate_rport_io,
668 .show_host_port_state = 1, 654 .show_host_port_state = 1,
669 .bsg_request = zfcp_execute_fc_job, 655 .bsg_request = zfcp_execute_fc_job,