Lines Matching refs: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);
448 Sg_request *srp;
473 srp = sg_get_rq_mark(sfp, req_pack_id, &busy);
474 if (!srp) { /* now wait on packet to arrive */
478 ((srp = sg_get_rq_mark(sfp, req_pack_id, &busy)) ||
480 if (!srp)
484 if (srp->header.interface_id != '\0')
485 return sg_new_read(sfp, buf, count, srp);
487 hp = &srp->header;
496 ((srp->data.cmd_opcode >= 0xc0) && (12 == hp->cmd_len)) ? 1 : 0;
501 (srp->sense_b[0] & 0x70) == 0x70) {
503 memcpy(old_hdr->sense_buffer, srp->sense_b,
527 old_hdr->result = (srp->sense_b[0] == 0 &&
545 if (sg_read_oxfer(srp, buf, count - SZ_SG_HEADER)) {
552 sg_finish_rem_req(srp);
553 sg_remove_request(sfp, srp);
561 sg_new_read(Sg_fd * sfp, char __user *buf, size_t count, Sg_request * srp)
563 sg_io_hdr_t *hp = &srp->header;
579 (srp->sense_b[0] & 0x70) == 0x70) {
582 len = 8 + (int) srp->sense_b[7]; /* Additional sense length field */
584 if (copy_to_user(hp->sbp, srp->sense_b, len)) {
596 err2 = sg_finish_rem_req(srp);
597 sg_remove_request(sfp, srp);
609 Sg_request *srp;
644 if (!(srp = sg_add_request(sfp))) {
667 sg_remove_request(sfp, srp);
670 hp = &srp->header;
692 sg_remove_request(sfp, srp);
710 k = sg_common_write(sfp, srp, cmnd, sfp->timeout, blocking);
720 Sg_request *srp;
730 if (!(srp = sg_add_request(sfp))) {
735 srp->sg_io_owned = sg_io_owned;
736 hp = &srp->header;
738 sg_remove_request(sfp, srp);
742 sg_remove_request(sfp, srp);
747 sg_remove_request(sfp, srp);
751 sg_remove_request(sfp, srp);
755 sg_remove_request(sfp, srp);
759 ul_timeout = msecs_to_jiffies(srp->header.timeout);
762 sg_remove_request(sfp, srp);
766 sg_remove_request(sfp, srp);
770 sg_remove_request(sfp, srp);
773 k = sg_common_write(sfp, srp, cmnd, timeout, blocking);
777 *o_srp = srp;
782 sg_common_write(Sg_fd * sfp, Sg_request * srp,
787 sg_io_hdr_t *hp = &srp->header;
789 srp->data.cmd_opcode = cmnd[0]; /* hold opcode of command */
802 sg_remove_request(sfp, srp);
806 k = sg_start_req(srp, cmnd);
810 sg_finish_rem_req(srp);
811 sg_remove_request(sfp, srp);
815 if (srp->bio) {
816 blk_mq_free_request(srp->rq);
817 srp->rq = NULL;
820 sg_finish_rem_req(srp);
821 sg_remove_request(sfp, srp);
832 srp->rq->timeout = timeout;
834 srp->rq->end_io = sg_rq_end_io;
835 blk_execute_rq_nowait(srp->rq, at_head);
839 static int srp_done(Sg_fd *sfp, Sg_request *srp)
845 ret = srp->done;
862 Sg_request *srp;
867 list_for_each_entry(srp, &sfp->rq_list, entry) {
870 rinfo[val].req_state = srp->done + 1;
872 srp->header.masked_status &
873 srp->header.host_status &
874 srp->header.driver_status;
875 if (srp->done)
877 srp->header.duration;
881 (ms > srp->header.duration) ?
882 (ms - srp->header.duration) : 0;
884 rinfo[val].orphan = srp->orphan;
885 rinfo[val].sg_io_owned = srp->sg_io_owned;
886 rinfo[val].pack_id = srp->header.pack_id;
887 rinfo[val].usr_ptr = srp->header.usr_ptr;
925 Sg_request *srp;
939 1, read_only, 1, &srp);
943 srp_done(sfp, srp));
945 if (srp->done) {
946 srp->done = 2;
948 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
951 srp->orphan = 1;
1005 list_for_each_entry(srp, &sfp->rq_list, entry) {
1006 if ((1 == srp->done) && (!srp->sg_io_owned)) {
1009 return put_user(srp->header.pack_id, ip);
1017 list_for_each_entry(srp, &sfp->rq_list, entry) {
1018 if ((1 == srp->done) && (!srp->sg_io_owned))
1175 Sg_request *srp;
1187 list_for_each_entry(srp, &sfp->rq_list, entry) {
1189 if ((0 == res) && (1 == srp->done) && (!srp->sg_io_owned))
1306 struct sg_request *srp = container_of(work, struct sg_request, ew.work);
1307 struct sg_fd *sfp = srp->parentfp;
1309 sg_finish_rem_req(srp);
1310 sg_remove_request(sfp, srp);
1322 struct sg_request *srp = rq->end_io_data;
1330 if (WARN_ON(srp->done != 0))
1333 sfp = srp->parentfp;
1347 srp->header.pack_id, result));
1348 srp->header.resid = resid;
1350 srp->header.duration = (ms > srp->header.duration) ?
1351 (ms - srp->header.duration) : 0;
1355 srp->header.status = 0xff & result;
1356 srp->header.masked_status = sg_status_byte(result);
1357 srp->header.msg_status = COMMAND_COMPLETE;
1358 srp->header.host_status = host_byte(result);
1359 srp->header.driver_status = driver_byte(result);
1361 ((CHECK_CONDITION == srp->header.masked_status) ||
1362 (COMMAND_TERMINATED == srp->header.masked_status)))
1379 memcpy(srp->sense_b, scmd->sense_buffer, SCSI_SENSE_BUFFERSIZE);
1381 /* Rely on write phase to clean out srp status values, so no "else" */
1389 srp->rq = NULL;
1393 if (unlikely(srp->orphan)) {
1395 srp->sg_io_owned = 0;
1399 srp->done = done;
1410 INIT_WORK(&srp->ew.work, sg_rq_end_io_usercontext);
1411 schedule_work(&srp->ew.work);
1729 sg_start_req(Sg_request *srp, unsigned char *cmd)
1733 Sg_fd *sfp = srp->parentfp;
1734 sg_io_hdr_t *hp = &srp->header;
1738 Sg_scatter_hold *req_schp = &srp->data;
1774 srp->rq = rq;
1775 rq->end_io_data = srp;
1793 sg_link_reserve(sfp, srp, dxfer_len);
1823 srp->bio = rq->bio;
1834 sg_finish_rem_req(Sg_request *srp)
1838 Sg_fd *sfp = srp->parentfp;
1839 Sg_scatter_hold *req_schp = &srp->data;
1843 (int) srp->res_used));
1844 if (srp->bio)
1845 ret = blk_rq_unmap_user(srp->bio);
1847 if (srp->rq)
1848 blk_mq_free_request(srp->rq);
1850 if (srp->res_used)
1851 sg_unlink_reserve(sfp, srp);
1973 sg_read_oxfer(Sg_request * srp, char __user *outp, int num_read_xfer)
1975 Sg_scatter_hold *schp = &srp->data;
1978 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp,
2024 sg_link_reserve(Sg_fd * sfp, Sg_request * srp, int size)
2026 Sg_scatter_hold *req_schp = &srp->data;
2030 srp->res_used = 1;
2055 sg_unlink_reserve(Sg_fd * sfp, Sg_request * srp)
2057 Sg_scatter_hold *req_schp = &srp->data;
2059 SCSI_LOG_TIMEOUT(4, sg_printk(KERN_INFO, srp->parentfp->parentdp,
2067 srp->res_used = 0;
2134 sg_remove_request(Sg_fd * sfp, Sg_request * srp)
2139 if (!sfp || !srp || list_empty(&sfp->rq_list))
2142 if (!list_empty(&srp->entry)) {
2143 list_del(&srp->entry);
2144 srp->parentfp = NULL;
2214 Sg_request *srp;
2220 srp = list_first_entry(&sfp->rq_list, Sg_request, entry);
2221 sg_finish_rem_req(srp);
2222 list_del(&srp->entry);
2223 srp->parentfp = NULL;
2533 Sg_request *srp;
2551 list_for_each_entry(srp, &fp->rq_list, entry) {
2552 hp = &srp->header;
2554 if (srp->res_used) {
2567 blen = srp->data.bufflen;
2568 usg = srp->data.k_use_sg;
2569 seq_puts(s, srp->done ?
2570 ((1 == srp->done) ? "rcv:" : "fin:")
2573 srp->header.pack_id, blen);
2574 if (srp->done)
2584 (int) srp->data.cmd_opcode);