Lines Matching refs:request
56 static void __tape_34xx_medium_sense(struct tape_request *request)
58 struct tape_device *device = request->device;
61 if (request->rc == 0) {
62 sense = request->cpdata;
81 request->rc);
82 tape_free_request(request);
87 struct tape_request *request;
90 request = tape_alloc_request(1, 32);
91 if (IS_ERR(request)) {
93 return PTR_ERR(request);
96 request->op = TO_MSEN;
97 tape_ccw_end(request->cpaddr, SENSE, 32, request->cpdata);
98 rc = tape_do_io_interruptible(device, request);
99 __tape_34xx_medium_sense(request);
105 struct tape_request *request;
107 request = tape_alloc_request(1, 32);
108 if (IS_ERR(request)) {
113 request->op = TO_MSEN;
114 tape_ccw_end(request->cpaddr, SENSE, 32, request->cpdata);
115 request->callback = (void *) __tape_34xx_medium_sense;
116 request->callback_data = NULL;
117 tape_do_io_async(device, request);
175 tape_34xx_done(struct tape_request *request)
177 DBF_EVENT(6, "%s done\n", tape_op_verbose[request->op]);
179 switch (request->op) {
186 tape_34xx_delete_sbid_from(request->device, 0);
195 tape_34xx_erp_failed(struct tape_request *request, int rc)
198 tape_op_verbose[request->op], rc);
203 tape_34xx_erp_succeeded(struct tape_request *request)
206 tape_op_verbose[request->op]);
207 return tape_34xx_done(request);
211 tape_34xx_erp_retry(struct tape_request *request)
213 DBF_EVENT(3, "xerp retr %s\n", tape_op_verbose[request->op]);
218 * This function is called, when no request is outstanding and we get an
242 struct tape_request *request)
244 if (request->op == TO_RFO) {
247 * *correctly*. We transform the request to a read backward
250 tape_std_read_backward(device, request);
251 return tape_34xx_erp_retry(request);
258 return tape_34xx_erp_failed(request, -EIO);
262 tape_34xx_erp_bug(struct tape_device *device, struct tape_request *request,
265 if (request->op != TO_ASSIGN) {
268 tape_dump_sense_dbf(device, request, irb);
270 return tape_34xx_erp_failed(request, -EIO);
278 tape_34xx_erp_overrun(struct tape_device *device, struct tape_request *request,
284 return tape_34xx_erp_failed(request, -EIO);
286 return tape_34xx_erp_bug(device, request, irb, -1);
294 struct tape_request *request, struct irb *irb)
302 return tape_34xx_erp_failed(request, -EIO);
308 return tape_34xx_erp_bug(device, request, irb, -2);
317 tape_34xx_unit_check(struct tape_device *device, struct tape_request *request,
331 request->op == TO_DSE ||
332 request->op == TO_WRI ||
333 request->op == TO_WTM
336 return tape_34xx_erp_failed(request, -EACCES);
338 return tape_34xx_erp_bug(device, request, irb, -3);
362 switch (request->op) {
373 return tape_34xx_erp_failed(request, -ENOSPC);
375 return tape_34xx_erp_retry(request);
385 return tape_34xx_erp_failed(request, -EIO);
389 return tape_34xx_erp_failed(request, 0);
398 return tape_34xx_erp_failed(request, -ENOSPC);
400 return tape_34xx_erp_failed(request, 0);
406 return tape_34xx_erp_retry(request);
421 return tape_34xx_erp_bug(device, request,
427 return tape_34xx_erp_failed(request, -EIO);
435 return tape_34xx_erp_bug(device, request,
441 return tape_34xx_erp_failed(request, -EIO);
444 return tape_34xx_erp_read_opposite(device, request);
449 return tape_34xx_erp_failed(request, -EIO);
454 return tape_34xx_erp_failed(request, -ENOSPC);
459 return tape_34xx_erp_failed(request, -EIO);
465 return tape_34xx_erp_bug(device, request,
471 return tape_34xx_erp_overrun(device, request, irb);
474 return tape_34xx_erp_sequence(device, request, irb);
486 return tape_34xx_erp_retry(request);
495 return tape_34xx_erp_failed(request, -EIO);
502 return tape_34xx_erp_succeeded(request);
510 return tape_34xx_erp_retry(request);
517 return tape_34xx_erp_failed(request, -EIO);
523 return tape_34xx_erp_retry(request);
529 if (request->op == TO_RUN) {
532 return tape_34xx_erp_succeeded(request);
535 return tape_34xx_erp_bug(device, request, irb, sense[3]);
541 return tape_34xx_erp_failed(request, -EIO);
544 if (request->op == TO_DSE)
545 return tape_34xx_erp_failed(request, -EIO);
547 return tape_34xx_erp_bug(device, request, irb, sense[3]);
556 return tape_34xx_erp_failed(request, -EMEDIUMTYPE);
561 return tape_34xx_erp_failed(request, -EACCES);
566 return tape_34xx_erp_failed(request, -EIO);
575 return tape_34xx_erp_failed(request, -EIO);
583 if (request->op == TO_RUN)
584 return tape_34xx_erp_failed(request, -EIO);
585 return tape_34xx_erp_bug(device, request, irb, sense[3]);
596 return tape_34xx_erp_failed(request, -EIO);
600 return tape_34xx_erp_failed(request, -EIO);
602 return tape_34xx_erp_bug(device, request, irb, sense[3]);
610 return tape_34xx_erp_failed(request, -EIO);
616 if (request->op==TO_WRI ||
617 request->op==TO_DSE ||
618 request->op==TO_WTM)
619 return tape_34xx_erp_failed(request, -ENOSPC);
620 return tape_34xx_erp_failed(request, -EIO);
623 return tape_34xx_erp_failed(request, -EIO);
627 return tape_34xx_erp_failed(request, -EIO);
633 return tape_34xx_erp_failed(request, -EIO);
641 return tape_34xx_erp_retry(request);
648 switch(request->op) {
653 return tape_34xx_done(request);
659 return tape_34xx_erp_failed(request, -ENOMEDIUM);
662 if (request->op != TO_BLOCK && request->op != TO_LBL)
664 return tape_34xx_erp_bug(device, request,
666 return tape_34xx_erp_failed(request, -EIO);
671 return tape_34xx_erp_failed(request, -EIO);
679 return tape_34xx_erp_failed(request, -EIO);
685 return tape_34xx_erp_failed(request, -EIO);
687 /* Log sense data and retry request. */
688 return tape_34xx_erp_retry(request);
693 return tape_34xx_erp_failed(request, -EIO);
698 return tape_34xx_erp_failed(request, -EIO);
706 return tape_34xx_erp_failed(request, -EIO);
712 return tape_34xx_erp_retry(request);
720 return tape_34xx_erp_retry(request);
722 return tape_34xx_erp_bug(device, request, irb, sense[3]);
732 return tape_34xx_erp_failed(request, -ENOBUFS);
735 return tape_34xx_erp_bug(device, request, irb, sense[3]);
743 return tape_34xx_erp_retry(request);
751 return tape_34xx_erp_retry(request);
754 if (request->op == TO_RUN) {
757 return tape_34xx_erp_succeeded(request);
759 return tape_34xx_erp_bug(device, request, irb, sense[3]);
762 return tape_34xx_erp_retry(request);
765 return tape_34xx_erp_retry(request);
770 return tape_34xx_erp_failed(request, -EIO);
775 return tape_34xx_erp_failed(request, -EIO);
781 return tape_34xx_erp_retry(request);
789 return tape_34xx_erp_failed(request, -EIO);
794 return tape_34xx_erp_retry(request);
797 return tape_34xx_erp_failed(request, -EIO);
802 return tape_34xx_erp_failed(request, -EIO);
807 return tape_34xx_erp_failed(request, -EMEDIUMTYPE);
812 return tape_34xx_erp_failed(request, -EMEDIUMTYPE);
824 return tape_34xx_erp_bug(device, request, irb, sense[3]);
832 tape_34xx_irq(struct tape_device *device, struct tape_request *request,
835 if (request == NULL)
840 (request->op == TO_WRI)) {
842 return tape_34xx_erp_failed(request, -ENOSPC);
846 return tape_34xx_unit_check(device, request, irb);
853 if (request->op == TO_BSB || request->op == TO_FSB)
854 request->rescnt++;
858 return tape_34xx_done(request);
862 tape_dump_sense_dbf(device, request, irb);
1089 struct tape_request *request;
1096 request = tape_alloc_request(3, 4);
1097 if (IS_ERR(request))
1098 return PTR_ERR(request);
1101 request->op = TO_LBL;
1102 bid = (struct tape_34xx_block_id *) request->cpdata;
1108 tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, device->modeset_byte);
1109 tape_ccw_cc(request->cpaddr + 1, LOCATE, 4, request->cpdata);
1110 tape_ccw_end(request->cpaddr + 2, NOP, 0, NULL);
1113 return tape_do_io_free(device, request);