[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
@ -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 *,
|
extern int zfcp_fsf_send_ct(struct zfcp_send_ct *, mempool_t *,
|
||||||
struct zfcp_erp_action *);
|
struct zfcp_erp_action *);
|
||||||
extern int zfcp_fsf_send_els(struct zfcp_send_els *);
|
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 *,
|
extern int zfcp_fsf_send_fcp_command_task(struct zfcp_adapter *,
|
||||||
struct zfcp_unit *,
|
struct zfcp_unit *,
|
||||||
struct scsi_cmnd *,
|
struct scsi_cmnd *,
|
||||||
|
@ -4548,52 +4548,6 @@ skip_fsfstatus:
|
|||||||
return retval;
|
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
|
static inline int
|
||||||
zfcp_fsf_req_sbal_check(unsigned long *flags,
|
zfcp_fsf_req_sbal_check(unsigned long *flags,
|
||||||
struct zfcp_qdio_queue *queue, int needed)
|
struct zfcp_qdio_queue *queue, int needed)
|
||||||
|
@ -558,9 +558,8 @@ static int
|
|||||||
zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags)
|
zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags)
|
||||||
{
|
{
|
||||||
struct zfcp_adapter *adapter = unit->port->adapter;
|
struct zfcp_adapter *adapter = unit->port->adapter;
|
||||||
int retval;
|
|
||||||
int status;
|
|
||||||
struct zfcp_fsf_req *fsf_req;
|
struct zfcp_fsf_req *fsf_req;
|
||||||
|
int retval = 0;
|
||||||
|
|
||||||
/* issue task management function */
|
/* issue task management function */
|
||||||
fsf_req = zfcp_fsf_send_fcp_command_task_management
|
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;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = zfcp_fsf_req_wait_and_cleanup(fsf_req,
|
__wait_event(fsf_req->completion_wq,
|
||||||
ZFCP_UNINTERRUPTIBLE, &status);
|
fsf_req->status & ZFCP_STATUS_FSFREQ_COMPLETED);
|
||||||
/*
|
|
||||||
* check completion status of task management function
|
/* check completion status of task management function */
|
||||||
* (status should always be valid since no signals permitted)
|
if (fsf_req->status & ZFCP_STATUS_FSFREQ_TMFUNCFAILED)
|
||||||
*/
|
|
||||||
if (status & ZFCP_STATUS_FSFREQ_TMFUNCFAILED)
|
|
||||||
retval = -EIO;
|
retval = -EIO;
|
||||||
else if (status & ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP)
|
else if (fsf_req->status & ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP)
|
||||||
retval = -ENOTSUPP;
|
retval = -ENOTSUPP;
|
||||||
else
|
|
||||||
retval = 0;
|
zfcp_fsf_req_free(fsf_req);
|
||||||
out:
|
out:
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user