Lines Matching defs:srp
181 static int sg_start_req(Sg_request *srp, unsigned char *cmd);
182 static int sg_finish_rem_req(Sg_request * srp);
185 Sg_request * srp);
189 static int sg_common_write(Sg_fd * sfp, Sg_request * srp,
191 static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer);
194 static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
195 static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
200 static int sg_remove_request(Sg_fd * sfp, Sg_request * srp);
445 Sg_request *srp;
470 srp = sg_get_rq_mark(sfp, req_pack_id, &busy);
471 if (!srp) { /* now wait on packet to arrive */
475 ((srp = sg_get_rq_mark(sfp, req_pack_id, &busy)) ||
477 if (!srp)
481 if (srp->header.interface_id != '\0')
482 return sg_new_read(sfp, buf, count, srp);
484 hp = &srp->header;
493 ((srp->data.cmd_opcode >= 0xc0) && (12 == hp->cmd_len)) ? 1 : 0;
498 (srp->sense_b[0] & 0x70) == 0x70) {
500 memcpy(old_hdr->sense_buffer, srp->sense_b,
524 old_hdr->result = (srp->sense_b[0] == 0 &&
542 if (sg_read_oxfer(srp, buf, count - SZ_SG_HEADER)) {
549 sg_finish_rem_req(srp);
550 sg_remove_request(sfp, srp);
558 sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp)
560 sg_io_hdr_t *hp = &srp->header;
576 (srp->sense_b[0] & 0x70) == 0x70) {
579 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */
581 if (copy_to_user(hp->sbp, srp->sense_b, len)) {
593 err2 = sg_finish_rem_req(srp);
594 sg_remove_request(sfp, srp);
606 Sg_request *srp;
641 if (!(srp = sg_add_request(sfp))) {
664 sg_remove_request(sfp, srp);
667 hp = &srp->header;
689 sg_remove_request(sfp, srp);
707 k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking);
717 Sg_request *srp;
727 if (!(srp = sg_add_request(sfp))) {
732 srp->sg_io_owned = sg_io_owned;
733 hp = &srp->header;
735 sg_remove_request(sfp, srp);
739 sg_remove_request(sfp, srp);
744 sg_remove_request(sfp, srp);
748 sg_remove_request(sfp, srp);
752 sg_remove_request(sfp, srp);
756 ul_timeout = msecs_to_jiffies(srp->header.timeout);
759 sg_remove_request(sfp, srp);
763 sg_remove_request(sfp, srp);
767 sg_remove_request(sfp, srp);
770 k = sg_common_write(sfp, srp, cmnd, timeout, blocking);
774 *o_srp = srp;
779 sg_common_write(Sg_fd * sfp, Sg_request * srp,
784 sg_io_hdr_t *hp = &srp->header;
786 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */
799 sg_remove_request(sfp, srp);
803 k = sg_start_req(srp, cmnd);
807 sg_finish_rem_req(srp);
808 sg_remove_request(sfp, srp);
812 if (srp->bio) {
813 blk_mq_free_request(srp->rq);
814 srp->rq = NULL;
817 sg_finish_rem_req(srp);
818 sg_remove_request(sfp, srp);
829 srp->rq->timeout = timeout;
831 srp->rq->end_io = sg_rq_end_io;
832 blk_execute_rq_nowait(srp->rq, at_head);
836 static int srp_done(Sg_fd *sfp, Sg_request *srp)
842 ret = srp->done;
859 Sg_request *srp;
864 list_for_each_entry(srp, &sfp->rq_list, entry) {
867 rinfo[val].req_state = srp->done + 1;
869 srp->header.masked_status &
870 srp->header.host_status &
871 srp->header.driver_status;
872 if (srp->done)
874 srp->header.duration;
878 (ms > srp->header.duration) ?
879 (ms - srp->header.duration) : 0;
881 rinfo[val].orphan = srp->orphan;
882 rinfo[val].sg_io_owned = srp->sg_io_owned;
883 rinfo[val].pack_id = srp->header.pack_id;
884 rinfo[val].usr_ptr = srp->header.usr_ptr;
922 Sg_request *srp;
936 1, read_only, 1, &srp);
940 srp_done(sfp, srp));
942 if (srp->done) {
943 srp->done = 2;
945 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
948 srp->orphan = 1;
1002 list_for_each_entry(srp, &sfp->rq_list, entry) {
1003 if ((1 == srp->done) && (!srp->sg_io_owned)) {
1006 return put_user(srp->header.pack_id, ip);
1014 list_for_each_entry(srp, &sfp->rq_list, entry) {
1015 if ((1 == srp->done) && (!srp->sg_io_owned))
1172 Sg_request *srp;
1184 list_for_each_entry(srp, &sfp->rq_list, entry) {
1186 if ((0 == res) && (1 == srp->done) && (!srp->sg_io_owned))
1303 struct sg_request *srp = container_of(work, struct sg_request, ew.work);
1304 struct sg_fd *sfp = srp->parentfp;
1306 sg_finish_rem_req(srp);
1307 sg_remove_request(sfp, srp);
1319 struct sg_request *srp = rq->end_io_data;
1327 if (WARN_ON(srp->done != 0))
1330 sfp = srp->parentfp;
1344 srp->header.pack_id, result));
1345 srp->header.resid = resid;
1347 srp->header.duration = (ms > srp->header.duration) ?
1348 (ms - srp->header.duration) : 0;
1352 srp->header.status = 0xff & result;
1353 srp->header.masked_status = sg_status_byte(result);
1354 srp->header.msg_status = COMMAND_COMPLETE;
1355 srp->header.host_status = host_byte(result);
1356 srp->header.driver_status = driver_byte(result);
1358 ((CHECK_CONDITION == srp->header.masked_status) ||
1359 (COMMAND_TERMINATED == srp->header.masked_status)))
1376 memcpy(srp->sense_b, scmd->sense_buffer, SCSI_SENSE_BUFFERSIZE);
1378 /* Rely on write phase to clean out srp status values, so no "else" */
1386 srp->rq = NULL;
1390 if (unlikely(srp->orphan)) {
1392 srp->sg_io_owned = 0;
1396 srp->done = done;
1407 INIT_WORK(&srp->ew.work, sg_rq_end_io_usercontext);
1408 schedule_work(&srp->ew.work);
1727 sg_start_req(Sg_request *srp, unsigned char *cmd)
1731 Sg_fd *sfp = srp->parentfp;
1732 sg_io_hdr_t *hp = &srp->header;
1736 Sg_scatter_hold *req_schp = &srp->data;
1772 srp->rq = rq;
1773 rq->end_io_data = srp;
1791 sg_link_reserve(sfp, srp, dxfer_len);
1821 srp->bio = rq->bio;
1832 sg_finish_rem_req(Sg_request *srp)
1836 Sg_fd *sfp = srp->parentfp;
1837 Sg_scatter_hold *req_schp = &srp->data;
1841 (int) srp->res_used));
1842 if (srp->bio)
1843 ret = blk_rq_unmap_user(srp->bio);
1845 if (srp->rq)
1846 blk_mq_free_request(srp->rq);
1848 if (srp->res_used)
1849 sg_unlink_reserve(sfp, srp);
1971 sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer)
1973 Sg_scatter_hold *schp = &srp->data;
1976 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp,
2022 sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
2024 Sg_scatter_hold *req_schp = &srp->data;
2028 srp->res_used = 1;
2053 sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp)
2055 Sg_scatter_hold *req_schp = &srp->data;
2057 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp,
2065 srp->res_used = 0;
2132 sg_remove_request(Sg_fd * sfp, Sg_request * srp)
2137 if (!sfp || !srp || list_empty(&sfp->rq_list))
2140 if (!list_empty(&srp->entry)) {
2141 list_del(&srp->entry);
2142 srp->parentfp = NULL;
2211 Sg_request *srp;
2217 srp = list_first_entry(&sfp->rq_list, Sg_request, entry);
2218 sg_finish_rem_req(srp);
2219 list_del(&srp->entry);
2220 srp->parentfp = NULL;
2530 Sg_request *srp;
2548 list_for_each_entry(srp, &fp->rq_list, entry) {
2549 hp = &srp->header;
2551 if (srp->res_used) {
2564 blen = srp->data.bufflen;
2565 usg = srp->data.k_use_sg;
2566 seq_puts(s, srp->done ?
2567 ((1 == srp->done) ? "rcv:" : "fin:")
2570 srp->header.pack_id, blen);
2571 if (srp->done)
2581 (int) srp->data.cmd_opcode);