Commit 77eb1699 authored by Andreas Herrmann's avatar Andreas Herrmann Committed by James Bottomley

[SCSI] zfcp: remove function zfcp_fsf_req_wait_and_cleanup

Signed-off-by: default avatarAndreas Herrmann <aherrman@de.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 059c97d0
......@@ -109,7 +109,6 @@ extern int zfcp_fsf_req_create(struct zfcp_adapter *, u32, int, mempool_t *,
extern int zfcp_fsf_send_ct(struct zfcp_send_ct *, mempool_t *,
struct zfcp_erp_action *);
extern int zfcp_fsf_send_els(struct zfcp_send_els *);
extern int zfcp_fsf_req_wait_and_cleanup(struct zfcp_fsf_req *, int, u32 *);
extern int zfcp_fsf_send_fcp_command_task(struct zfcp_adapter *,
struct zfcp_unit *,
struct scsi_cmnd *,
......
......@@ -4548,52 +4548,6 @@ skip_fsfstatus:
return retval;
}
/*
* function: zfcp_fsf_req_wait_and_cleanup
*
* purpose:
*
* FIXME(design): signal seems to be <0 !!!
* returns: 0 - request completed (*status is valid), cleanup succ.
* <0 - request completed (*status is valid), cleanup failed
* >0 - signal which interrupted waiting (*status invalid),
* request not completed, no cleanup
*
* *status is a copy of status of completed fsf_req
*/
int
zfcp_fsf_req_wait_and_cleanup(struct zfcp_fsf_req *fsf_req,
int interruptible, u32 * status)
{
int retval = 0;
int signal = 0;
if (interruptible) {
__wait_event_interruptible(fsf_req->completion_wq,
fsf_req->status &
ZFCP_STATUS_FSFREQ_COMPLETED,
signal);
if (signal) {
ZFCP_LOG_DEBUG("Caught signal %i while waiting for the "
"completion of the request at %p\n",
signal, fsf_req);
retval = signal;
goto out;
}
} else {
__wait_event(fsf_req->completion_wq,
fsf_req->status & ZFCP_STATUS_FSFREQ_COMPLETED);
}
*status = fsf_req->status;
/* cleanup request */
zfcp_fsf_req_free(fsf_req);
out:
return retval;
}
static inline int
zfcp_fsf_req_sbal_check(unsigned long *flags,
struct zfcp_qdio_queue *queue, int needed)
......
......@@ -558,9 +558,8 @@ static int
zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags)
{
struct zfcp_adapter *adapter = unit->port->adapter;
int retval;
int status;
struct zfcp_fsf_req *fsf_req;
int retval = 0;
/* issue task management function */
fsf_req = zfcp_fsf_send_fcp_command_task_management
......@@ -574,18 +573,16 @@ zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags)
goto out;
}
retval = zfcp_fsf_req_wait_and_cleanup(fsf_req,
ZFCP_UNINTERRUPTIBLE, &status);
/*
* check completion status of task management function
* (status should always be valid since no signals permitted)
*/
if (status & ZFCP_STATUS_FSFREQ_TMFUNCFAILED)
__wait_event(fsf_req->completion_wq,
fsf_req->status & ZFCP_STATUS_FSFREQ_COMPLETED);
/* check completion status of task management function */
if (fsf_req->status & ZFCP_STATUS_FSFREQ_TMFUNCFAILED)
retval = -EIO;
else if (status & ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP)
else if (fsf_req->status & ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP)
retval = -ENOTSUPP;
else
retval = 0;
zfcp_fsf_req_free(fsf_req);
out:
return retval;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment