[SCSI] zfcp: Fix opening of wka ports
Running two wka_port_get calls in parallel could issue two open_port requests, overwriting the port handle. Don't issue an open_port for the state PORT_OPENING, and only read the data from GOOD responses. Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Acked-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
bce02614cd
commit
1c1cba17a9
|
@ -50,7 +50,8 @@ static int zfcp_wka_port_get(struct zfcp_wka_port *wka_port)
|
|||
if (mutex_lock_interruptible(&wka_port->mutex))
|
||||
return -ERESTARTSYS;
|
||||
|
||||
if (wka_port->status != ZFCP_WKA_PORT_ONLINE) {
|
||||
if (wka_port->status == ZFCP_WKA_PORT_OFFLINE ||
|
||||
wka_port->status == ZFCP_WKA_PORT_CLOSING) {
|
||||
wka_port->status = ZFCP_WKA_PORT_OPENING;
|
||||
if (zfcp_fsf_open_wka_port(wka_port))
|
||||
wka_port->status = ZFCP_WKA_PORT_OFFLINE;
|
||||
|
|
|
@ -1584,6 +1584,7 @@ static void zfcp_fsf_open_wka_port_handler(struct zfcp_fsf_req *req)
|
|||
wka_port->status = ZFCP_WKA_PORT_OFFLINE;
|
||||
break;
|
||||
case FSF_PORT_ALREADY_OPEN:
|
||||
break;
|
||||
case FSF_GOOD:
|
||||
wka_port->handle = header->port_handle;
|
||||
wka_port->status = ZFCP_WKA_PORT_ONLINE;
|
||||
|
|
Loading…
Reference in New Issue