Lines Matching refs:request
291 __tape_cancel_io(struct tape_device *device, struct tape_request *request) in __tape_cancel_io() argument
297 if (request->callback == NULL) in __tape_cancel_io()
302 rc = ccw_device_clear(device->cdev, (long) request); in __tape_cancel_io()
306 request->status = TAPE_REQUEST_DONE; in __tape_cancel_io()
309 request->status = TAPE_REQUEST_CANCEL; in __tape_cancel_io()
591 struct tape_request * request; in __tape_discard_requests() local
595 request = list_entry(l, struct tape_request, list); in __tape_discard_requests()
596 if (request->status == TAPE_REQUEST_IN_IO) in __tape_discard_requests()
597 request->status = TAPE_REQUEST_DONE; in __tape_discard_requests()
598 list_del(&request->list); in __tape_discard_requests()
601 request->device = NULL; in __tape_discard_requests()
603 request->rc = -EIO; in __tape_discard_requests()
604 if (request->callback != NULL) in __tape_discard_requests()
605 request->callback(request, request->callback_data); in __tape_discard_requests()
675 struct tape_request *request; in tape_alloc_request() local
681 request = kzalloc_obj(struct tape_request); in tape_alloc_request()
682 if (request == NULL) { in tape_alloc_request()
688 request->cpaddr = kzalloc_objs(struct ccw1, cplength, in tape_alloc_request()
690 if (request->cpaddr == NULL) { in tape_alloc_request()
692 kfree(request); in tape_alloc_request()
698 request->cpdata = kzalloc(datasize, GFP_KERNEL | GFP_DMA); in tape_alloc_request()
699 if (request->cpdata == NULL) { in tape_alloc_request()
701 kfree(request->cpaddr); in tape_alloc_request()
702 kfree(request); in tape_alloc_request()
706 DBF_LH(6, "New request %p(%p/%p)\n", request, request->cpaddr, in tape_alloc_request()
707 request->cpdata); in tape_alloc_request()
709 return request; in tape_alloc_request()
716 tape_free_request (struct tape_request * request) in tape_free_request() argument
718 DBF_LH(6, "Free request %p\n", request); in tape_free_request()
720 if (request->device) in tape_free_request()
721 tape_put_device(request->device); in tape_free_request()
722 kfree(request->cpdata); in tape_free_request()
723 kfree(request->cpaddr); in tape_free_request()
724 kfree(request); in tape_free_request()
758 __tape_start_io(struct tape_device *device, struct tape_request *request) in __tape_start_io() argument
764 request->cpaddr, in __tape_start_io()
765 (unsigned long) request, in __tape_start_io()
767 request->options in __tape_start_io()
770 request->status = TAPE_REQUEST_IN_IO; in __tape_start_io()
773 request->status = TAPE_REQUEST_QUEUED; in __tape_start_io()
787 struct tape_request *request; in __tape_start_next_request() local
796 request = list_entry(l, struct tape_request, list); in __tape_start_next_request()
802 if (request->status == TAPE_REQUEST_IN_IO) in __tape_start_next_request()
809 if (request->status == TAPE_REQUEST_DONE) in __tape_start_next_request()
818 if (request->status == TAPE_REQUEST_CANCEL) { in __tape_start_next_request()
819 rc = __tape_cancel_io(device, request); in __tape_start_next_request()
821 rc = __tape_start_io(device, request); in __tape_start_next_request()
827 request->rc = rc; in __tape_start_next_request()
828 request->status = TAPE_REQUEST_DONE; in __tape_start_next_request()
831 list_del(&request->list); in __tape_start_next_request()
834 if (request->callback != NULL) in __tape_start_next_request()
835 request->callback(request, request->callback_data); in __tape_start_next_request()
854 struct tape_request *request; in tape_long_busy_timeout() local
857 request = list_entry(device->req_queue.next, struct tape_request, list); in tape_long_busy_timeout()
858 BUG_ON(request->status != TAPE_REQUEST_LONG_BUSY); in tape_long_busy_timeout()
868 struct tape_request * request, in __tape_end_request() argument
871 DBF_LH(6, "__tape_end_request(%p, %p, %i)\n", device, request, rc); in __tape_end_request()
872 if (request) { in __tape_end_request()
873 request->rc = rc; in __tape_end_request()
874 request->status = TAPE_REQUEST_DONE; in __tape_end_request()
877 list_del(&request->list); in __tape_end_request()
880 if (request->callback != NULL) in __tape_end_request()
881 request->callback(request, request->callback_data); in __tape_end_request()
893 tape_dump_sense_dbf(struct tape_device *device, struct tape_request *request, in tape_dump_sense_dbf() argument
899 if (request != NULL) in tape_dump_sense_dbf()
900 op = tape_op_verbose[request->op]; in tape_dump_sense_dbf()
919 __tape_start_request(struct tape_device *device, struct tape_request *request) in __tape_start_request() argument
923 switch (request->op) { in __tape_start_request()
942 request->device = tape_get_device(device); in __tape_start_request()
946 rc = __tape_start_io(device, request); in __tape_start_request()
950 DBF_LH(5, "Request %p added for execution.\n", request); in __tape_start_request()
951 list_add(&request->list, &device->req_queue); in __tape_start_request()
953 DBF_LH(5, "Request %p add to queue.\n", request); in __tape_start_request()
954 request->status = TAPE_REQUEST_QUEUED; in __tape_start_request()
955 list_add_tail(&request->list, &device->req_queue); in __tape_start_request()
965 tape_do_io_async(struct tape_device *device, struct tape_request *request) in tape_do_io_async() argument
969 DBF_LH(6, "tape_do_io_async(%p, %p)\n", device, request); in tape_do_io_async()
973 rc = __tape_start_request(device, request); in tape_do_io_async()
984 __tape_wake_up(struct tape_request *request, void *data) in __tape_wake_up() argument
986 request->callback = NULL; in __tape_wake_up()
991 tape_do_io(struct tape_device *device, struct tape_request *request) in tape_do_io() argument
997 request->callback = __tape_wake_up; in tape_do_io()
998 request->callback_data = &device->wait_queue; in tape_do_io()
1000 rc = __tape_start_request(device, request); in tape_do_io()
1005 wait_event(device->wait_queue, (request->callback == NULL)); in tape_do_io()
1007 return request->rc; in tape_do_io()
1016 __tape_wake_up_interruptible(struct tape_request *request, void *data) in __tape_wake_up_interruptible() argument
1018 request->callback = NULL; in __tape_wake_up_interruptible()
1024 struct tape_request *request) in tape_do_io_interruptible() argument
1030 request->callback = __tape_wake_up_interruptible; in tape_do_io_interruptible()
1031 request->callback_data = &device->wait_queue; in tape_do_io_interruptible()
1032 rc = __tape_start_request(device, request); in tape_do_io_interruptible()
1038 (request->callback == NULL)); in tape_do_io_interruptible()
1041 return request->rc; in tape_do_io_interruptible()
1045 rc = __tape_cancel_io(device, request); in tape_do_io_interruptible()
1052 (request->callback == NULL) in tape_do_io_interruptible()
1066 tape_cancel_io(struct tape_device *device, struct tape_request *request) in tape_cancel_io() argument
1071 rc = __tape_cancel_io(device, request); in tape_cancel_io()
1083 struct tape_request *request; in __tape_do_irq() local
1090 request = (struct tape_request *) intparm; in __tape_do_irq()
1092 DBF_LH(6, "__tape_do_irq(device=%p, request=%p)\n", device, request); in __tape_do_irq()
1103 __tape_end_request(device, request, -EIO); in __tape_do_irq()
1121 (request->status == TAPE_REQUEST_IN_IO)) { in __tape_do_irq()
1124 request->status = TAPE_REQUEST_QUEUED; in __tape_do_irq()
1130 if (request != NULL) { in __tape_do_irq()
1131 request->rescnt = irb->scsw.cmd.count; in __tape_do_irq()
1132 memcpy(&request->irb, irb, sizeof(*irb)); in __tape_do_irq()
1160 tape_dump_sense_dbf(device, request, irb); in __tape_do_irq()
1174 if(request != NULL && request->status == TAPE_REQUEST_DONE) { in __tape_do_irq()
1175 __tape_end_request(device, request, -EIO); in __tape_do_irq()
1179 rc = device->discipline->irq(device, request, irb); in __tape_do_irq()
1191 __tape_end_request(device, request, rc); in __tape_do_irq()
1200 request->status = TAPE_REQUEST_LONG_BUSY; in __tape_do_irq()
1203 rc = __tape_start_io(device, request); in __tape_do_irq()
1205 __tape_end_request(device, request, rc); in __tape_do_irq()
1208 rc = __tape_cancel_io(device, request); in __tape_do_irq()
1210 __tape_end_request(device, request, rc); in __tape_do_irq()
1215 __tape_end_request(device, request, -EIO); in __tape_do_irq()
1217 __tape_end_request(device, request, rc); in __tape_do_irq()