Lines Matching refs:srp
177 static int sg_start_req(Sg_request *srp, unsigned char *cmd);
178 static int sg_finish_rem_req(Sg_request * srp);
181 Sg_request * srp);
185 static int sg_common_write(Sg_fd * sfp, Sg_request * srp,
187 static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer);
190 static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
191 static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
196 static int sg_remove_request(Sg_fd * sfp, Sg_request * srp);
446 Sg_request *srp; in sg_read() local
471 srp = sg_get_rq_mark(sfp, req_pack_id, &busy); in sg_read()
472 if (!srp) { /* now wait on packet to arrive */ in sg_read()
476 ((srp = sg_get_rq_mark(sfp, req_pack_id, &busy)) || in sg_read()
478 if (!srp) in sg_read()
482 if (srp->header.interface_id != '\0') in sg_read()
483 return sg_new_read(sfp, buf, count, srp); in sg_read()
485 hp = &srp->header; in sg_read()
494 ((srp->data.cmd_opcode >= 0xc0) && (12 == hp->cmd_len)) ? 1 : 0; in sg_read()
499 (srp->sense_b[0] & 0x70) == 0x70) { in sg_read()
501 memcpy(old_hdr->sense_buffer, srp->sense_b, in sg_read()
525 old_hdr->result = (srp->sense_b[0] == 0 && in sg_read()
543 if (sg_read_oxfer(srp, buf, count - SZ_SG_HEADER)) { in sg_read()
550 sg_finish_rem_req(srp); in sg_read()
551 sg_remove_request(sfp, srp); in sg_read()
559 sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp) in sg_new_read() argument
561 sg_io_hdr_t *hp = &srp->header; in sg_new_read()
577 (srp->sense_b[0] & 0x70) == 0x70) { in sg_new_read()
580 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */ in sg_new_read()
582 if (copy_to_user(hp->sbp, srp->sense_b, len)) { in sg_new_read()
594 err2 = sg_finish_rem_req(srp); in sg_new_read()
595 sg_remove_request(sfp, srp); in sg_new_read()
607 Sg_request *srp; in sg_write() local
642 if (!(srp = sg_add_request(sfp))) { in sg_write()
665 sg_remove_request(sfp, srp); in sg_write()
668 hp = &srp->header; in sg_write()
690 sg_remove_request(sfp, srp); in sg_write()
708 k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking); in sg_write()
718 Sg_request *srp; in sg_new_write() local
728 if (!(srp = sg_add_request(sfp))) { in sg_new_write()
733 srp->sg_io_owned = sg_io_owned; in sg_new_write()
734 hp = &srp->header; in sg_new_write()
736 sg_remove_request(sfp, srp); in sg_new_write()
740 sg_remove_request(sfp, srp); in sg_new_write()
745 sg_remove_request(sfp, srp); in sg_new_write()
749 sg_remove_request(sfp, srp); in sg_new_write()
753 sg_remove_request(sfp, srp); in sg_new_write()
757 ul_timeout = msecs_to_jiffies(srp->header.timeout); in sg_new_write()
760 sg_remove_request(sfp, srp); in sg_new_write()
764 sg_remove_request(sfp, srp); in sg_new_write()
768 sg_remove_request(sfp, srp); in sg_new_write()
771 k = sg_common_write(sfp, srp, cmnd, timeout, blocking); in sg_new_write()
775 *o_srp = srp; in sg_new_write()
780 sg_common_write(Sg_fd * sfp, Sg_request * srp, in sg_common_write() argument
785 sg_io_hdr_t *hp = &srp->header; in sg_common_write()
787 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */ in sg_common_write()
800 sg_remove_request(sfp, srp); in sg_common_write()
804 k = sg_start_req(srp, cmnd); in sg_common_write()
808 sg_finish_rem_req(srp); in sg_common_write()
809 sg_remove_request(sfp, srp); in sg_common_write()
813 if (srp->bio) { in sg_common_write()
814 scsi_req_free_cmd(scsi_req(srp->rq)); in sg_common_write()
815 blk_put_request(srp->rq); in sg_common_write()
816 srp->rq = NULL; in sg_common_write()
819 sg_finish_rem_req(srp); in sg_common_write()
820 sg_remove_request(sfp, srp); in sg_common_write()
831 srp->rq->timeout = timeout; in sg_common_write()
833 blk_execute_rq_nowait(NULL, srp->rq, at_head, sg_rq_end_io); in sg_common_write()
837 static int srp_done(Sg_fd *sfp, Sg_request *srp) in srp_done() argument
843 ret = srp->done; in srp_done()
860 Sg_request *srp; in sg_fill_request_table() local
865 list_for_each_entry(srp, &sfp->rq_list, entry) { in sg_fill_request_table()
868 rinfo[val].req_state = srp->done + 1; in sg_fill_request_table()
870 srp->header.masked_status & in sg_fill_request_table()
871 srp->header.host_status & in sg_fill_request_table()
872 srp->header.driver_status; in sg_fill_request_table()
873 if (srp->done) in sg_fill_request_table()
875 srp->header.duration; in sg_fill_request_table()
879 (ms > srp->header.duration) ? in sg_fill_request_table()
880 (ms - srp->header.duration) : 0; in sg_fill_request_table()
882 rinfo[val].orphan = srp->orphan; in sg_fill_request_table()
883 rinfo[val].sg_io_owned = srp->sg_io_owned; in sg_fill_request_table()
884 rinfo[val].pack_id = srp->header.pack_id; in sg_fill_request_table()
885 rinfo[val].usr_ptr = srp->header.usr_ptr; in sg_fill_request_table()
923 Sg_request *srp; in sg_ioctl_common() local
937 1, read_only, 1, &srp); in sg_ioctl_common()
941 srp_done(sfp, srp)); in sg_ioctl_common()
943 if (srp->done) { in sg_ioctl_common()
944 srp->done = 2; in sg_ioctl_common()
946 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp); in sg_ioctl_common()
949 srp->orphan = 1; in sg_ioctl_common()
1003 list_for_each_entry(srp, &sfp->rq_list, entry) { in sg_ioctl_common()
1004 if ((1 == srp->done) && (!srp->sg_io_owned)) { in sg_ioctl_common()
1007 return put_user(srp->header.pack_id, ip); in sg_ioctl_common()
1015 list_for_each_entry(srp, &sfp->rq_list, entry) { in sg_ioctl_common()
1016 if ((1 == srp->done) && (!srp->sg_io_owned)) in sg_ioctl_common()
1172 Sg_request *srp; in sg_poll() local
1184 list_for_each_entry(srp, &sfp->rq_list, entry) { in sg_poll()
1186 if ((0 == res) && (1 == srp->done) && (!srp->sg_io_owned)) in sg_poll()
1303 struct sg_request *srp = container_of(work, struct sg_request, ew.work); in sg_rq_end_io_usercontext() local
1304 struct sg_fd *sfp = srp->parentfp; in sg_rq_end_io_usercontext()
1306 sg_finish_rem_req(srp); in sg_rq_end_io_usercontext()
1307 sg_remove_request(sfp, srp); in sg_rq_end_io_usercontext()
1318 struct sg_request *srp = rq->end_io_data; in sg_rq_end_io() local
1327 if (WARN_ON(srp->done != 0)) in sg_rq_end_io()
1330 sfp = srp->parentfp; in sg_rq_end_io()
1344 srp->header.pack_id, result)); in sg_rq_end_io()
1345 srp->header.resid = resid; in sg_rq_end_io()
1347 srp->header.duration = (ms > srp->header.duration) ? in sg_rq_end_io()
1348 (ms - srp->header.duration) : 0; in sg_rq_end_io()
1352 srp->header.status = 0xff & result; in sg_rq_end_io()
1353 srp->header.masked_status = status_byte(result); in sg_rq_end_io()
1354 srp->header.msg_status = COMMAND_COMPLETE; in sg_rq_end_io()
1355 srp->header.host_status = host_byte(result); in sg_rq_end_io()
1356 srp->header.driver_status = driver_byte(result); in sg_rq_end_io()
1358 ((CHECK_CONDITION == srp->header.masked_status) || in sg_rq_end_io()
1359 (COMMAND_TERMINATED == srp->header.masked_status))) in sg_rq_end_io()
1376 memcpy(srp->sense_b, req->sense, SCSI_SENSE_BUFFERSIZE); in sg_rq_end_io()
1386 srp->rq = NULL; in sg_rq_end_io()
1391 if (unlikely(srp->orphan)) { in sg_rq_end_io()
1393 srp->sg_io_owned = 0; in sg_rq_end_io()
1397 srp->done = done; in sg_rq_end_io()
1408 INIT_WORK(&srp->ew.work, sg_rq_end_io_usercontext); in sg_rq_end_io()
1409 schedule_work(&srp->ew.work); in sg_rq_end_io()
1684 sg_start_req(Sg_request *srp, unsigned char *cmd) in sg_start_req() argument
1689 Sg_fd *sfp = srp->parentfp; in sg_start_req()
1690 sg_io_hdr_t *hp = &srp->header; in sg_start_req()
1694 Sg_scatter_hold *req_schp = &srp->data; in sg_start_req()
1735 srp->rq = rq; in sg_start_req()
1736 rq->end_io_data = srp; in sg_start_req()
1754 sg_link_reserve(sfp, srp, dxfer_len); in sg_start_req()
1802 srp->bio = rq->bio; in sg_start_req()
1813 sg_finish_rem_req(Sg_request *srp) in sg_finish_rem_req() argument
1817 Sg_fd *sfp = srp->parentfp; in sg_finish_rem_req()
1818 Sg_scatter_hold *req_schp = &srp->data; in sg_finish_rem_req()
1822 (int) srp->res_used)); in sg_finish_rem_req()
1823 if (srp->bio) in sg_finish_rem_req()
1824 ret = blk_rq_unmap_user(srp->bio); in sg_finish_rem_req()
1826 if (srp->rq) { in sg_finish_rem_req()
1827 scsi_req_free_cmd(scsi_req(srp->rq)); in sg_finish_rem_req()
1828 blk_put_request(srp->rq); in sg_finish_rem_req()
1831 if (srp->res_used) in sg_finish_rem_req()
1832 sg_unlink_reserve(sfp, srp); in sg_finish_rem_req()
1954 sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer) in sg_read_oxfer() argument
1956 Sg_scatter_hold *schp = &srp->data; in sg_read_oxfer()
1959 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp, in sg_read_oxfer()
2005 sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size) in sg_link_reserve() argument
2007 Sg_scatter_hold *req_schp = &srp->data; in sg_link_reserve()
2011 srp->res_used = 1; in sg_link_reserve()
2036 sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp) in sg_unlink_reserve() argument
2038 Sg_scatter_hold *req_schp = &srp->data; in sg_unlink_reserve()
2040 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp, in sg_unlink_reserve()
2048 srp->res_used = 0; in sg_unlink_reserve()
2115 sg_remove_request(Sg_fd * sfp, Sg_request * srp) in sg_remove_request() argument
2120 if (!sfp || !srp || list_empty(&sfp->rq_list)) in sg_remove_request()
2123 if (!list_empty(&srp->entry)) { in sg_remove_request()
2124 list_del(&srp->entry); in sg_remove_request()
2125 srp->parentfp = NULL; in sg_remove_request()
2194 Sg_request *srp; in sg_remove_sfp_usercontext() local
2200 srp = list_first_entry(&sfp->rq_list, Sg_request, entry); in sg_remove_sfp_usercontext()
2201 sg_finish_rem_req(srp); in sg_remove_sfp_usercontext()
2202 list_del(&srp->entry); in sg_remove_sfp_usercontext()
2203 srp->parentfp = NULL; in sg_remove_sfp_usercontext()
2513 Sg_request *srp; in sg_proc_debug_helper() local
2531 list_for_each_entry(srp, &fp->rq_list, entry) { in sg_proc_debug_helper()
2532 hp = &srp->header; in sg_proc_debug_helper()
2534 if (srp->res_used) { in sg_proc_debug_helper()
2547 blen = srp->data.bufflen; in sg_proc_debug_helper()
2548 usg = srp->data.k_use_sg; in sg_proc_debug_helper()
2549 seq_puts(s, srp->done ? in sg_proc_debug_helper()
2550 ((1 == srp->done) ? "rcv:" : "fin:") in sg_proc_debug_helper()
2553 srp->header.pack_id, blen); in sg_proc_debug_helper()
2554 if (srp->done) in sg_proc_debug_helper()
2564 (int) srp->data.cmd_opcode); in sg_proc_debug_helper()