Lines Matching refs:srp

192 static int sg_start_req(Sg_request *srp, unsigned char *cmd);
193 static int sg_finish_rem_req(Sg_request * srp);
196 Sg_request * srp);
200 static int sg_common_write(Sg_fd * sfp, Sg_request * srp,
202 static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer);
205 static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
206 static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
211 static int sg_remove_request(Sg_fd * sfp, Sg_request * srp);
403 Sg_request *srp; in sg_read() local
444 srp = sg_get_rq_mark(sfp, req_pack_id); in sg_read()
445 if (!srp) { /* now wait on packet to arrive */ in sg_read()
456 (srp = sg_get_rq_mark(sfp, req_pack_id)))); in sg_read()
466 if (srp->header.interface_id != '\0') { in sg_read()
467 retval = sg_new_read(sfp, buf, count, srp); in sg_read()
471 hp = &srp->header; in sg_read()
484 ((srp->data.cmd_opcode >= 0xc0) && (12 == hp->cmd_len)) ? 1 : 0; in sg_read()
490 memcpy(old_hdr->sense_buffer, srp->sense_b, in sg_read()
513 old_hdr->result = (srp->sense_b[0] == 0 && in sg_read()
531 if (sg_read_oxfer(srp, buf, count - SZ_SG_HEADER)) { in sg_read()
538 sg_finish_rem_req(srp); in sg_read()
546 sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp) in sg_new_read() argument
548 sg_io_hdr_t *hp = &srp->header; in sg_new_read()
562 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */ in sg_new_read()
564 if (copy_to_user(hp->sbp, srp->sense_b, len)) { in sg_new_read()
578 err2 = sg_finish_rem_req(srp); in sg_new_read()
590 Sg_request *srp; in sg_write() local
618 if (!(srp = sg_add_request(sfp))) { in sg_write()
641 sg_remove_request(sfp, srp); in sg_write()
644 hp = &srp->header; in sg_write()
686 k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking); in sg_write()
696 Sg_request *srp; in sg_new_write() local
708 if (!(srp = sg_add_request(sfp))) { in sg_new_write()
713 srp->sg_io_owned = sg_io_owned; in sg_new_write()
714 hp = &srp->header; in sg_new_write()
716 sg_remove_request(sfp, srp); in sg_new_write()
720 sg_remove_request(sfp, srp); in sg_new_write()
725 sg_remove_request(sfp, srp); in sg_new_write()
729 sg_remove_request(sfp, srp); in sg_new_write()
733 sg_remove_request(sfp, srp); in sg_new_write()
737 ul_timeout = msecs_to_jiffies(srp->header.timeout); in sg_new_write()
740 sg_remove_request(sfp, srp); in sg_new_write()
744 sg_remove_request(sfp, srp); in sg_new_write()
748 sg_remove_request(sfp, srp); in sg_new_write()
752 sg_remove_request(sfp, srp); in sg_new_write()
755 k = sg_common_write(sfp, srp, cmnd, timeout, blocking); in sg_new_write()
759 *o_srp = srp; in sg_new_write()
764 sg_common_write(Sg_fd * sfp, Sg_request * srp, in sg_common_write() argument
769 sg_io_hdr_t *hp = &srp->header; in sg_common_write()
771 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */ in sg_common_write()
783 k = sg_start_req(srp, cmnd); in sg_common_write()
787 sg_finish_rem_req(srp); in sg_common_write()
791 if (srp->bio) { in sg_common_write()
792 if (srp->rq->cmd != srp->rq->__cmd) in sg_common_write()
793 kfree(srp->rq->cmd); in sg_common_write()
795 blk_end_request_all(srp->rq, -EIO); in sg_common_write()
796 srp->rq = NULL; in sg_common_write()
799 sg_finish_rem_req(srp); in sg_common_write()
810 srp->rq->timeout = timeout; in sg_common_write()
813 srp->rq, at_head, sg_rq_end_io); in sg_common_write()
817 static int srp_done(Sg_fd *sfp, Sg_request *srp) in srp_done() argument
823 ret = srp->done; in srp_done()
845 Sg_request *srp; in sg_ioctl() local
864 1, read_only, 1, &srp); in sg_ioctl()
868 (srp_done(sfp, srp) || atomic_read(&sdp->detaching))); in sg_ioctl()
872 if (srp->done) { in sg_ioctl()
873 srp->done = 2; in sg_ioctl()
875 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp); in sg_ioctl()
878 srp->orphan = 1; in sg_ioctl()
948 for (srp = sfp->headrp; srp; srp = srp->nextrp) { in sg_ioctl()
949 if ((1 == srp->done) && (!srp->sg_io_owned)) { in sg_ioctl()
952 __put_user(srp->header.pack_id, ip); in sg_ioctl()
961 for (val = 0, srp = sfp->headrp; srp; srp = srp->nextrp) { in sg_ioctl()
962 if ((1 == srp->done) && (!srp->sg_io_owned)) in sg_ioctl()
1028 for (srp = sfp->headrp, val = 0; val < SG_MAX_QUEUE; in sg_ioctl()
1029 ++val, srp = srp ? srp->nextrp : srp) { in sg_ioctl()
1031 if (srp) { in sg_ioctl()
1032 rinfo[val].req_state = srp->done + 1; in sg_ioctl()
1034 srp->header.masked_status & in sg_ioctl()
1035 srp->header.host_status & in sg_ioctl()
1036 srp->header.driver_status; in sg_ioctl()
1037 if (srp->done) in sg_ioctl()
1039 srp->header.duration; in sg_ioctl()
1043 (ms > srp->header.duration) ? in sg_ioctl()
1044 (ms - srp->header.duration) : 0; in sg_ioctl()
1046 rinfo[val].orphan = srp->orphan; in sg_ioctl()
1048 srp->sg_io_owned; in sg_ioctl()
1050 srp->header.pack_id; in sg_ioctl()
1052 srp->header.usr_ptr; in sg_ioctl()
1150 Sg_request *srp; in sg_poll() local
1162 for (srp = sfp->headrp; srp; srp = srp->nextrp) { in sg_poll()
1164 if ((0 == res) && (1 == srp->done) && (!srp->sg_io_owned)) in sg_poll()
1274 struct sg_request *srp = container_of(work, struct sg_request, ew.work); in sg_rq_end_io_usercontext() local
1275 struct sg_fd *sfp = srp->parentfp; in sg_rq_end_io_usercontext()
1277 sg_finish_rem_req(srp); in sg_rq_end_io_usercontext()
1288 struct sg_request *srp = rq->end_io_data; in sg_rq_end_io() local
1296 if (WARN_ON(srp->done != 0)) in sg_rq_end_io()
1299 sfp = srp->parentfp; in sg_rq_end_io()
1313 srp->header.pack_id, result)); in sg_rq_end_io()
1314 srp->header.resid = resid; in sg_rq_end_io()
1316 srp->header.duration = (ms > srp->header.duration) ? in sg_rq_end_io()
1317 (ms - srp->header.duration) : 0; in sg_rq_end_io()
1321 srp->header.status = 0xff & result; in sg_rq_end_io()
1322 srp->header.masked_status = status_byte(result); in sg_rq_end_io()
1323 srp->header.msg_status = msg_byte(result); in sg_rq_end_io()
1324 srp->header.host_status = host_byte(result); in sg_rq_end_io()
1325 srp->header.driver_status = driver_byte(result); in sg_rq_end_io()
1327 ((CHECK_CONDITION == srp->header.masked_status) || in sg_rq_end_io()
1328 (COMMAND_TERMINATED == srp->header.masked_status))) in sg_rq_end_io()
1351 srp->rq = NULL; in sg_rq_end_io()
1357 if (unlikely(srp->orphan)) { in sg_rq_end_io()
1359 srp->sg_io_owned = 0; in sg_rq_end_io()
1363 srp->done = done; in sg_rq_end_io()
1374 INIT_WORK(&srp->ew.work, sg_rq_end_io_usercontext); in sg_rq_end_io()
1375 schedule_work(&srp->ew.work); in sg_rq_end_io()
1664 sg_start_req(Sg_request *srp, unsigned char *cmd) in sg_start_req() argument
1668 Sg_fd *sfp = srp->parentfp; in sg_start_req()
1669 sg_io_hdr_t *hp = &srp->header; in sg_start_req()
1673 Sg_scatter_hold *req_schp = &srp->data; in sg_start_req()
1718 srp->rq = rq; in sg_start_req()
1719 rq->end_io_data = srp; in sg_start_req()
1720 rq->sense = srp->sense_b; in sg_start_req()
1736 sg_link_reserve(sfp, srp, dxfer_len); in sg_start_req()
1771 srp->bio = rq->bio; in sg_start_req()
1782 sg_finish_rem_req(Sg_request *srp) in sg_finish_rem_req() argument
1786 Sg_fd *sfp = srp->parentfp; in sg_finish_rem_req()
1787 Sg_scatter_hold *req_schp = &srp->data; in sg_finish_rem_req()
1791 (int) srp->res_used)); in sg_finish_rem_req()
1792 if (srp->bio) in sg_finish_rem_req()
1793 ret = blk_rq_unmap_user(srp->bio); in sg_finish_rem_req()
1795 if (srp->rq) { in sg_finish_rem_req()
1796 if (srp->rq->cmd != srp->rq->__cmd) in sg_finish_rem_req()
1797 kfree(srp->rq->cmd); in sg_finish_rem_req()
1798 blk_put_request(srp->rq); in sg_finish_rem_req()
1801 if (srp->res_used) in sg_finish_rem_req()
1802 sg_unlink_reserve(sfp, srp); in sg_finish_rem_req()
1806 sg_remove_request(sfp, srp); in sg_finish_rem_req()
1932 sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer) in sg_read_oxfer() argument
1934 Sg_scatter_hold *schp = &srp->data; in sg_read_oxfer()
1937 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp, in sg_read_oxfer()
1983 sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size) in sg_link_reserve() argument
1985 Sg_scatter_hold *req_schp = &srp->data; in sg_link_reserve()
1989 srp->res_used = 1; in sg_link_reserve()
2014 sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp) in sg_unlink_reserve() argument
2016 Sg_scatter_hold *req_schp = &srp->data; in sg_unlink_reserve()
2018 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp, in sg_unlink_reserve()
2027 srp->res_used = 0; in sg_unlink_reserve()
2094 sg_remove_request(Sg_fd * sfp, Sg_request * srp) in sg_remove_request() argument
2101 if ((!sfp) || (!srp) || (!sfp->headrp)) in sg_remove_request()
2105 if (srp == prev_rp) { in sg_remove_request()
2111 if (srp == rp) { in sg_remove_request()
2217 const Sg_request *srp; in sg_res_in_use() local
2221 for (srp = sfp->headrp; srp; srp = srp->nextrp) in sg_res_in_use()
2222 if (srp->res_used) in sg_res_in_use()
2225 return srp ? 1 : 0; in sg_res_in_use()
2598 Sg_request *srp; in sg_proc_debug_helper() local
2617 for (m = 0, srp = fp->headrp; in sg_proc_debug_helper()
2618 srp != NULL; in sg_proc_debug_helper()
2619 ++m, srp = srp->nextrp) { in sg_proc_debug_helper()
2620 hp = &srp->header; in sg_proc_debug_helper()
2622 if (srp->res_used) { in sg_proc_debug_helper()
2635 blen = srp->data.bufflen; in sg_proc_debug_helper()
2636 usg = srp->data.k_use_sg; in sg_proc_debug_helper()
2637 seq_puts(s, srp->done ? in sg_proc_debug_helper()
2638 ((1 == srp->done) ? "rcv:" : "fin:") in sg_proc_debug_helper()
2641 srp->header.pack_id, blen); in sg_proc_debug_helper()
2642 if (srp->done) in sg_proc_debug_helper()
2652 (int) srp->data.cmd_opcode); in sg_proc_debug_helper()