Lines Matching refs:sreq
74 SCSIRequest *sreq; member
139 if (req->sreq != NULL) { in vscsi_put_req()
140 scsi_req_unref(req->sreq); in vscsi_put_req()
142 req->sreq = NULL; in vscsi_put_req()
523 static void vscsi_transfer_data(SCSIRequest *sreq, uint32_t len) in vscsi_transfer_data() argument
525 VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(sreq->bus->qbus.parent); in vscsi_transfer_data()
526 vscsi_req *req = sreq->hba_private; in vscsi_transfer_data()
530 trace_spapr_vscsi_transfer_data(sreq->tag, len, req); in vscsi_transfer_data()
532 fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag); in vscsi_transfer_data()
537 buf = scsi_req_get_buf(sreq); in vscsi_transfer_data()
543 scsi_req_cancel(req->sreq); in vscsi_transfer_data()
549 scsi_req_continue(sreq); in vscsi_transfer_data()
553 static void vscsi_command_complete(SCSIRequest *sreq, size_t resid) in vscsi_command_complete() argument
555 VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(sreq->bus->qbus.parent); in vscsi_command_complete()
556 vscsi_req *req = sreq->hba_private; in vscsi_command_complete()
559 trace_spapr_vscsi_command_complete(sreq->tag, sreq->status, req); in vscsi_command_complete()
561 fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag); in vscsi_command_complete()
565 if (sreq->status == CHECK_CONDITION) { in vscsi_command_complete()
566 req->senselen = scsi_req_get_sense(req->sreq, req->sense, in vscsi_command_complete()
576 trace_spapr_vscsi_command_complete_status(sreq->status); in vscsi_command_complete()
577 if (sreq->status == 0) { in vscsi_command_complete()
587 vscsi_send_rsp(s, req, sreq->status, res_in, res_out); in vscsi_command_complete()
591 static void vscsi_request_cancelled(SCSIRequest *sreq) in vscsi_request_cancelled() argument
593 vscsi_req *req = sreq->hba_private; in vscsi_request_cancelled()
596 VSCSIState *s = VIO_SPAPR_VSCSI_DEVICE(sreq->bus->qbus.parent); in vscsi_request_cancelled()
628 static void vscsi_save_request(QEMUFile *f, SCSIRequest *sreq) in vscsi_save_request() argument
630 vscsi_req *req = sreq->hba_private; in vscsi_save_request()
639 static void *vscsi_load_request(QEMUFile *f, SCSIRequest *sreq) in vscsi_load_request() argument
641 SCSIBus *bus = sreq->bus; in vscsi_load_request()
646 assert(sreq->tag < VSCSI_REQ_LIMIT); in vscsi_load_request()
647 req = &s->reqs[sreq->tag]; in vscsi_load_request()
653 fprintf(stderr, "VSCSI: failed loading request tag#%u\n", sreq->tag); in vscsi_load_request()
658 req->sreq = scsi_req_ref(sreq); in vscsi_load_request()
805 req->sreq = scsi_req_new(sdev, req->qtag, lun, srp->cmd.cdb, cdb_len, req); in vscsi_queue_cmd()
806 n = scsi_req_enqueue(req->sreq); in vscsi_queue_cmd()
826 scsi_req_continue(req->sreq); in vscsi_queue_cmd()
856 if (tmpreq && tmpreq->sreq) { in vscsi_process_tsk_mgmt()
857 assert(tmpreq->sreq->hba_private); in vscsi_process_tsk_mgmt()
858 scsi_req_cancel(tmpreq->sreq); in vscsi_process_tsk_mgmt()
884 if (!tmpreq->active || !tmpreq->sreq) { in vscsi_process_tsk_mgmt()
887 assert(tmpreq->sreq->hba_private); in vscsi_process_tsk_mgmt()
888 scsi_req_cancel(tmpreq->sreq); in vscsi_process_tsk_mgmt()