diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_scsi.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_scsi.c | 22 |
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 | */ | ||
497 | static 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) | |||
516 | static void zfcp_scsi_terminate_rport_io(struct fc_rport *rport) | 501 | static 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, |