mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
[SCSI] zfcp: remove function zfcp_fsf_req_wait_and_cleanup
Signed-off-by: Andreas Herrmann <aherrman@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
059c97d043
commit
77eb1699c7
3 changed files with 9 additions and 59 deletions
|
@ -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 @@ zfcp_fsf_control_file_handler(struct zfcp_fsf_req *fsf_req)
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue