diff options
author | <jejb@titanic.il.steeleye.com> | 2005-04-11 00:04:28 -0400 |
---|---|---|
committer | James Bottomley <jejb@titanic> | 2005-04-18 13:34:41 -0400 |
commit | 6f71d9bc025b02a8cbc2be83b0226a7043a507a5 (patch) | |
tree | 01caefa8cdcb986b0a698c640a6a59d89e69db62 /drivers/s390/scsi/zfcp_erp.c | |
parent | f4c2c15b930b23edaa633b09fe3f4c01b4ecce9f (diff) |
zfcp: add point-2-point support
From: Andreas Herrmann <aherrman@de.ibm.com>
This patch mainly introduces support for point-2-point
topology.
From: Heiko Carstens <heiko.carstens@de.ibm.com>
From: Maxim Shchetynin <maxim@de.ibm.com>
From: Andreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/s390/scsi/zfcp_erp.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index cfc0d8c588df..53ebc1cdfe2d 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -2568,6 +2568,23 @@ zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *erp_action) | |||
2568 | case ZFCP_ERP_STEP_UNINITIALIZED: | 2568 | case ZFCP_ERP_STEP_UNINITIALIZED: |
2569 | case ZFCP_ERP_STEP_PHYS_PORT_CLOSING: | 2569 | case ZFCP_ERP_STEP_PHYS_PORT_CLOSING: |
2570 | case ZFCP_ERP_STEP_PORT_CLOSING: | 2570 | case ZFCP_ERP_STEP_PORT_CLOSING: |
2571 | if (adapter->fc_topology == FSF_TOPO_P2P) { | ||
2572 | if (port->wwpn != adapter->peer_wwpn) { | ||
2573 | ZFCP_LOG_NORMAL("Failed to open port 0x%016Lx " | ||
2574 | "on adapter %s.\nPeer WWPN " | ||
2575 | "0x%016Lx does not match\n", | ||
2576 | port->wwpn, | ||
2577 | zfcp_get_busid_by_adapter(adapter), | ||
2578 | adapter->peer_wwpn); | ||
2579 | zfcp_erp_port_failed(port); | ||
2580 | retval = ZFCP_ERP_FAILED; | ||
2581 | break; | ||
2582 | } | ||
2583 | port->d_id = adapter->peer_d_id; | ||
2584 | atomic_set_mask(ZFCP_STATUS_PORT_DID_DID, &port->status); | ||
2585 | retval = zfcp_erp_port_strategy_open_port(erp_action); | ||
2586 | break; | ||
2587 | } | ||
2571 | if (!(adapter->nameserver_port)) { | 2588 | if (!(adapter->nameserver_port)) { |
2572 | retval = zfcp_nameserver_enqueue(adapter); | 2589 | retval = zfcp_nameserver_enqueue(adapter); |
2573 | if (retval != 0) { | 2590 | if (retval != 0) { |
@@ -3516,8 +3533,9 @@ zfcp_erp_adapter_access_changed(struct zfcp_adapter *adapter) | |||
3516 | debug_text_event(adapter->erp_dbf, 3, "a_access_unblock"); | 3533 | debug_text_event(adapter->erp_dbf, 3, "a_access_unblock"); |
3517 | debug_event(adapter->erp_dbf, 3, &adapter->name, 8); | 3534 | debug_event(adapter->erp_dbf, 3, &adapter->name, 8); |
3518 | 3535 | ||
3519 | zfcp_erp_port_access_changed(adapter->nameserver_port); | ||
3520 | read_lock_irqsave(&zfcp_data.config_lock, flags); | 3536 | read_lock_irqsave(&zfcp_data.config_lock, flags); |
3537 | if (adapter->nameserver_port) | ||
3538 | zfcp_erp_port_access_changed(adapter->nameserver_port); | ||
3521 | list_for_each_entry(port, &adapter->port_list_head, list) | 3539 | list_for_each_entry(port, &adapter->port_list_head, list) |
3522 | if (port != adapter->nameserver_port) | 3540 | if (port != adapter->nameserver_port) |
3523 | zfcp_erp_port_access_changed(port); | 3541 | zfcp_erp_port_access_changed(port); |