Skip to content

Commit

Permalink
[SCSI] zfcp: Wait for free SBALs when possible
Browse files Browse the repository at this point in the history
For calls from zfcp erp, scsi_eh and sysfs switch the calls issuing
FSF requests to zfcp_fsf_req_sbal_get to wait for free SBALs.

Acked-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>
  • Loading branch information
Christof Schmitt authored and James Bottomley committed Mar 12, 2009
1 parent 52bfb55 commit 92cab0d
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions drivers/s390/scsi/zfcp_fsf.c
Original file line number Diff line number Diff line change
Expand Up @@ -929,8 +929,8 @@ struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long old_req_id,
struct qdio_buffer_element *sbale;
struct zfcp_fsf_req *req = NULL;

spin_lock(&adapter->req_q_lock);
if (!zfcp_fsf_sbal_available(adapter))
spin_lock_bh(&adapter->req_q_lock);
if (zfcp_fsf_req_sbal_get(adapter))
goto out;
req = zfcp_fsf_req_create(adapter, FSF_QTCB_ABORT_FCP_CMND,
req_flags, adapter->pool.fsf_req_abort);
Expand Down Expand Up @@ -961,7 +961,7 @@ struct zfcp_fsf_req *zfcp_fsf_abort_fcp_command(unsigned long old_req_id,
zfcp_fsf_req_free(req);
req = NULL;
out:
spin_unlock(&adapter->req_q_lock);
spin_unlock_bh(&adapter->req_q_lock);
return req;
}

Expand Down Expand Up @@ -1225,7 +1225,7 @@ int zfcp_fsf_exchange_config_data(struct zfcp_erp_action *erp_action)
int retval = -EIO;

spin_lock_bh(&adapter->req_q_lock);
if (!zfcp_fsf_sbal_available(adapter))
if (zfcp_fsf_req_sbal_get(adapter))
goto out;
req = zfcp_fsf_req_create(adapter,
FSF_QTCB_EXCHANGE_CONFIG_DATA,
Expand Down Expand Up @@ -1321,7 +1321,7 @@ int zfcp_fsf_exchange_port_data(struct zfcp_erp_action *erp_action)
return -EOPNOTSUPP;

spin_lock_bh(&adapter->req_q_lock);
if (!zfcp_fsf_sbal_available(adapter))
if (zfcp_fsf_req_sbal_get(adapter))
goto out;
req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA,
ZFCP_REQ_AUTO_CLEANUP,
Expand Down Expand Up @@ -1367,7 +1367,7 @@ int zfcp_fsf_exchange_port_data_sync(struct zfcp_adapter *adapter,
return -EOPNOTSUPP;

spin_lock_bh(&adapter->req_q_lock);
if (!zfcp_fsf_sbal_available(adapter))
if (zfcp_fsf_req_sbal_get(adapter))
goto out;

req = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA, 0,
Expand Down Expand Up @@ -2452,8 +2452,8 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_adapter *adapter,
ZFCP_STATUS_COMMON_UNBLOCKED)))
return NULL;

spin_lock(&adapter->req_q_lock);
if (!zfcp_fsf_sbal_available(adapter))
spin_lock_bh(&adapter->req_q_lock);
if (zfcp_fsf_req_sbal_get(adapter))
goto out;
req = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, req_flags,
adapter->pool.fsf_req_scsi);
Expand Down Expand Up @@ -2487,7 +2487,7 @@ struct zfcp_fsf_req *zfcp_fsf_send_fcp_ctm(struct zfcp_adapter *adapter,
zfcp_fsf_req_free(req);
req = NULL;
out:
spin_unlock(&adapter->req_q_lock);
spin_unlock_bh(&adapter->req_q_lock);
return req;
}

Expand Down

0 comments on commit 92cab0d

Please sign in to comment.