forked from Minki/linux
[SCSI] zfcp: Changed D_ID left port disabled
If the destination ID (D_ID) of a remote storage port changed, e.g. re-plugged cable on the switch in a different switch port, the port was never (re-)attached within Linux. This patch fixes the broken mapping between the WWPN and the D_ID. Signed-off-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
a17c585564
commit
ea460a8191
@ -895,8 +895,13 @@ static int zfcp_erp_port_strategy_open_common(struct zfcp_erp_action *act)
|
|||||||
act->step = ZFCP_ERP_STEP_PORT_CLOSING;
|
act->step = ZFCP_ERP_STEP_PORT_CLOSING;
|
||||||
return ZFCP_ERP_CONTINUES;
|
return ZFCP_ERP_CONTINUES;
|
||||||
}
|
}
|
||||||
/* fall through otherwise */
|
|
||||||
}
|
}
|
||||||
|
if (port->d_id && !(p_status & ZFCP_STATUS_COMMON_NOESC)) {
|
||||||
|
port->d_id = 0;
|
||||||
|
_zfcp_erp_port_reopen(port, 0, "erpsoc1", NULL);
|
||||||
|
return ZFCP_ERP_EXIT;
|
||||||
|
}
|
||||||
|
/* fall through otherwise */
|
||||||
}
|
}
|
||||||
return ZFCP_ERP_FAILED;
|
return ZFCP_ERP_FAILED;
|
||||||
}
|
}
|
||||||
|
@ -150,9 +150,14 @@ static void _zfcp_fc_incoming_rscn(struct zfcp_fsf_req *fsf_req, u32 range,
|
|||||||
struct zfcp_port *port;
|
struct zfcp_port *port;
|
||||||
|
|
||||||
read_lock_irqsave(&zfcp_data.config_lock, flags);
|
read_lock_irqsave(&zfcp_data.config_lock, flags);
|
||||||
list_for_each_entry(port, &fsf_req->adapter->port_list_head, list)
|
list_for_each_entry(port, &fsf_req->adapter->port_list_head, list) {
|
||||||
if ((port->d_id & range) == (elem->nport_did & range))
|
if ((port->d_id & range) == (elem->nport_did & range))
|
||||||
zfcp_test_link(port);
|
zfcp_test_link(port);
|
||||||
|
if (!port->d_id)
|
||||||
|
zfcp_erp_port_reopen(port,
|
||||||
|
ZFCP_STATUS_COMMON_ERP_FAILED,
|
||||||
|
"fcrscn1", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
read_unlock_irqrestore(&zfcp_data.config_lock, flags);
|
read_unlock_irqrestore(&zfcp_data.config_lock, flags);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user