aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_fsf.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/scsi/zfcp_fsf.c')
-rw-r--r--drivers/s390/scsi/zfcp_fsf.c46
1 files changed, 0 insertions, 46 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.c b/drivers/s390/scsi/zfcp_fsf.c
index 64e2c3480189..929f6c9cad39 100644
--- a/drivers/s390/scsi/zfcp_fsf.c
+++ b/drivers/s390/scsi/zfcp_fsf.c
@@ -4548,52 +4548,6 @@ skip_fsfstatus:
4548 return retval; 4548 return retval;
4549} 4549}
4550 4550
4551
4552/*
4553 * function: zfcp_fsf_req_wait_and_cleanup
4554 *
4555 * purpose:
4556 *
4557 * FIXME(design): signal seems to be <0 !!!
4558 * returns: 0 - request completed (*status is valid), cleanup succ.
4559 * <0 - request completed (*status is valid), cleanup failed
4560 * >0 - signal which interrupted waiting (*status invalid),
4561 * request not completed, no cleanup
4562 *
4563 * *status is a copy of status of completed fsf_req
4564 */
4565int
4566zfcp_fsf_req_wait_and_cleanup(struct zfcp_fsf_req *fsf_req,
4567 int interruptible, u32 * status)
4568{
4569 int retval = 0;
4570 int signal = 0;
4571
4572 if (interruptible) {
4573 __wait_event_interruptible(fsf_req->completion_wq,
4574 fsf_req->status &
4575 ZFCP_STATUS_FSFREQ_COMPLETED,
4576 signal);
4577 if (signal) {
4578 ZFCP_LOG_DEBUG("Caught signal %i while waiting for the "
4579 "completion of the request at %p\n",
4580 signal, fsf_req);
4581 retval = signal;
4582 goto out;
4583 }
4584 } else {
4585 __wait_event(fsf_req->completion_wq,
4586 fsf_req->status & ZFCP_STATUS_FSFREQ_COMPLETED);
4587 }
4588
4589 *status = fsf_req->status;
4590
4591 /* cleanup request */
4592 zfcp_fsf_req_free(fsf_req);
4593 out:
4594 return retval;
4595}
4596
4597static inline int 4551static inline int
4598zfcp_fsf_req_sbal_check(unsigned long *flags, 4552zfcp_fsf_req_sbal_check(unsigned long *flags,
4599 struct zfcp_qdio_queue *queue, int needed) 4553 struct zfcp_qdio_queue *queue, int needed)