Lines Matching defs:srp
176 static int sg_start_req(Sg_request *srp, unsigned char *cmd);
177 static int sg_finish_rem_req(Sg_request * srp);
180 Sg_request * srp);
184 static int sg_common_write(Sg_fd * sfp, Sg_request * srp,
186 static int sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer);
189 static void sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size);
190 static void sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp);
195 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;
499 memcpy(old_hdr->sense_buffer, srp->sense_b,
522 old_hdr->result = (srp->sense_b[0] == 0 &&
540 if (sg_read_oxfer(srp, buf, count - SZ_SG_HEADER)) {
547 sg_finish_rem_req(srp);
548 sg_remove_request(sfp, srp);
556 sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp)
558 sg_io_hdr_t *hp = &srp->header;
577 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */
579 if (copy_to_user(hp->sbp, srp->sense_b, len)) {
590 err2 = sg_finish_rem_req(srp);
591 sg_remove_request(sfp, srp);
603 Sg_request *srp;
638 if (!(srp = sg_add_request(sfp))) {
661 sg_remove_request(sfp, srp);
664 hp = &srp->header;
686 sg_remove_request(sfp, srp);
704 k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking);
714 Sg_request *srp;
724 if (!(srp = sg_add_request(sfp))) {
729 srp->sg_io_owned = sg_io_owned;
730 hp = &srp->header;
732 sg_remove_request(sfp, srp);
736 sg_remove_request(sfp, srp);
741 sg_remove_request(sfp, srp);
745 sg_remove_request(sfp, srp);
749 sg_remove_request(sfp, srp);
753 ul_timeout = msecs_to_jiffies(srp->header.timeout);
756 sg_remove_request(sfp, srp);
760 sg_remove_request(sfp, srp);
764 sg_remove_request(sfp, srp);
767 k = sg_common_write(sfp, srp, cmnd, timeout, blocking);
771 *o_srp = srp;
776 sg_common_write(Sg_fd * sfp, Sg_request * srp,
781 sg_io_hdr_t *hp = &srp->header;
783 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */
796 sg_remove_request(sfp, srp);
800 k = sg_start_req(srp, cmnd);
804 sg_finish_rem_req(srp);
805 sg_remove_request(sfp, srp);
809 if (srp->bio) {
810 scsi_req_free_cmd(scsi_req(srp->rq));
811 blk_put_request(srp->rq);
812 srp->rq = NULL;
815 sg_finish_rem_req(srp);
816 sg_remove_request(sfp, srp);
827 srp->rq->timeout = timeout;
830 srp->rq, at_head, sg_rq_end_io);
834 static int srp_done(Sg_fd *sfp, Sg_request *srp)
840 ret = srp->done;
857 Sg_request *srp;
862 list_for_each_entry(srp, &sfp->rq_list, entry) {
865 rinfo[val].req_state = srp->done + 1;
867 srp->header.masked_status &
868 srp->header.host_status &
869 srp->header.driver_status;
870 if (srp->done)
872 srp->header.duration;
876 (ms > srp->header.duration) ?
877 (ms - srp->header.duration) : 0;
879 rinfo[val].orphan = srp->orphan;
880 rinfo[val].sg_io_owned = srp->sg_io_owned;
881 rinfo[val].pack_id = srp->header.pack_id;
882 rinfo[val].usr_ptr = srp->header.usr_ptr;
920 Sg_request *srp;
934 1, read_only, 1, &srp);
938 srp_done(sfp, srp));
940 if (srp->done) {
941 srp->done = 2;
943 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
946 srp->orphan = 1;
1000 list_for_each_entry(srp, &sfp->rq_list, entry) {
1001 if ((1 == srp->done) && (!srp->sg_io_owned)) {
1004 return put_user(srp->header.pack_id, ip);
1012 list_for_each_entry(srp, &sfp->rq_list, entry) {
1013 if ((1 == srp->done) && (!srp->sg_io_owned))
1190 Sg_request *srp;
1202 list_for_each_entry(srp, &sfp->rq_list, entry) {
1204 if ((0 == res) && (1 == srp->done) && (!srp->sg_io_owned))
1321 struct sg_request *srp = container_of(work, struct sg_request, ew.work);
1322 struct sg_fd *sfp = srp->parentfp;
1324 sg_finish_rem_req(srp);
1325 sg_remove_request(sfp, srp);
1336 struct sg_request *srp = rq->end_io_data;
1345 if (WARN_ON(srp->done != 0))
1348 sfp = srp->parentfp;
1362 srp->header.pack_id, result));
1363 srp->header.resid = resid;
1365 srp->header.duration = (ms > srp->header.duration) ?
1366 (ms - srp->header.duration) : 0;
1370 srp->header.status = 0xff & result;
1371 srp->header.masked_status = status_byte(result);
1372 srp->header.msg_status = msg_byte(result);
1373 srp->header.host_status = host_byte(result);
1374 srp->header.driver_status = driver_byte(result);
1376 ((CHECK_CONDITION == srp->header.masked_status) ||
1377 (COMMAND_TERMINATED == srp->header.masked_status)))
1394 memcpy(srp->sense_b, req->sense, SCSI_SENSE_BUFFERSIZE);
1396 /* Rely on write phase to clean out srp status values, so no "else" */
1404 srp->rq = NULL;
1409 if (unlikely(srp->orphan)) {
1411 srp->sg_io_owned = 0;
1415 srp->done = done;
1426 INIT_WORK(&srp->ew.work, sg_rq_end_io_usercontext);
1427 schedule_work(&srp->ew.work);
1716 sg_start_req(Sg_request *srp, unsigned char *cmd)
1721 Sg_fd *sfp = srp->parentfp;
1722 sg_io_hdr_t *hp = &srp->header;
1726 Sg_scatter_hold *req_schp = &srp->data;
1767 srp->rq = rq;
1768 rq->end_io_data = srp;
1787 sg_link_reserve(sfp, srp, dxfer_len);
1835 srp->bio = rq->bio;
1846 sg_finish_rem_req(Sg_request *srp)
1850 Sg_fd *sfp = srp->parentfp;
1851 Sg_scatter_hold *req_schp = &srp->data;
1855 (int) srp->res_used));
1856 if (srp->bio)
1857 ret = blk_rq_unmap_user(srp->bio);
1859 if (srp->rq) {
1860 scsi_req_free_cmd(scsi_req(srp->rq));
1861 blk_put_request(srp->rq);
1864 if (srp->res_used)
1865 sg_unlink_reserve(sfp, srp);
1991 sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer)
1993 Sg_scatter_hold *schp = &srp->data;
1996 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp,
2042 sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
2044 Sg_scatter_hold *req_schp = &srp->data;
2048 srp->res_used = 1;
2073 sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp)
2075 Sg_scatter_hold *req_schp = &srp->data;
2077 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp,
2085 srp->res_used = 0;
2152 sg_remove_request(Sg_fd * sfp, Sg_request * srp)
2157 if (!sfp || !srp || list_empty(&sfp->rq_list))
2160 if (!list_empty(&srp->entry)) {
2161 list_del(&srp->entry);
2162 srp->parentfp = NULL;
2231 Sg_request *srp;
2237 srp = list_first_entry(&sfp->rq_list, Sg_request, entry);
2238 sg_finish_rem_req(srp);
2239 list_del(&srp->entry);
2240 srp->parentfp = NULL;
2550 Sg_request *srp;
2569 list_for_each_entry(srp, &fp->rq_list, entry) {
2570 hp = &srp->header;
2572 if (srp->res_used) {
2585 blen = srp->data.bufflen;
2586 usg = srp->data.k_use_sg;
2587 seq_puts(s, srp->done ?
2588 ((1 == srp->done) ? "rcv:" : "fin:")
2591 srp->header.pack_id, blen);
2592 if (srp->done)
2602 (int) srp->data.cmd_opcode);