Lines Matching refs:req
37 SCSIRequest req; member
44 static void scsi_generic_save_request(QEMUFile *f, SCSIRequest *req) in scsi_generic_save_request() argument
46 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_generic_save_request()
49 if (r->buflen && r->req.cmd.mode == SCSI_XFER_TO_DEV) { in scsi_generic_save_request()
50 assert(!r->req.sg); in scsi_generic_save_request()
51 qemu_put_buffer(f, r->buf, r->req.cmd.xfer); in scsi_generic_save_request()
55 static void scsi_generic_load_request(QEMUFile *f, SCSIRequest *req) in scsi_generic_load_request() argument
57 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_generic_load_request()
60 if (r->buflen && r->req.cmd.mode == SCSI_XFER_TO_DEV) { in scsi_generic_load_request()
61 assert(!r->req.sg); in scsi_generic_load_request()
62 qemu_get_buffer(f, r->buf, r->req.cmd.xfer); in scsi_generic_load_request()
66 static void scsi_free_request(SCSIRequest *req) in scsi_free_request() argument
68 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_free_request()
80 assert(r->req.aiocb == NULL); in scsi_command_complete_noio()
82 if (r->req.io_canceled) { in scsi_command_complete_noio()
83 scsi_req_cancel_complete(&r->req); in scsi_command_complete_noio()
89 scsi_req_build_sense(&r->req, sense); in scsi_command_complete_noio()
92 scsi_req_complete_failed(&r->req, io_hdr->host_status); in scsi_command_complete_noio()
99 r->req.sense_len = io_hdr->sb_len_wr; in scsi_command_complete_noio()
102 trace_scsi_generic_command_complete_noio(r, r->req.tag, status); in scsi_command_complete_noio()
104 scsi_req_complete(&r->req, status); in scsi_command_complete_noio()
106 scsi_req_unref(&r->req); in scsi_command_complete_noio()
113 assert(r->req.aiocb != NULL); in scsi_command_complete()
114 r->req.aiocb = NULL; in scsi_command_complete()
123 SCSIDevice *s = r->req.dev; in execute_command()
129 r->io_header.cmdp = r->req.cmd.buf; in execute_command()
130 r->io_header.cmd_len = r->req.cmd.len; in execute_command()
131 r->io_header.mx_sb_len = sizeof(r->req.sense); in execute_command()
132 r->io_header.sbp = r->req.sense; in execute_command()
137 trace_scsi_generic_aio_sgio_command(r->req.tag, r->req.cmd.buf[0], in execute_command()
139 r->req.aiocb = blk_aio_ioctl(blk, SG_IO, &r->io_header, complete, r); in execute_command()
140 if (r->req.aiocb == NULL) { in execute_command()
180 if (s->scsi_version == -1 && !(r->req.cmd.buf[1] & 0x01)) { in scsi_handle_inquiry_reply()
188 (r->req.cmd.buf[1] & 0x01)) { in scsi_handle_inquiry_reply()
189 page = r->req.cmd.buf[2]; in scsi_handle_inquiry_reply()
270 SCSIDevice *s = r->req.dev; in scsi_read_complete()
273 assert(r->req.aiocb != NULL); in scsi_read_complete()
274 r->req.aiocb = NULL; in scsi_read_complete()
276 if (ret || r->req.io_canceled) { in scsi_read_complete()
282 trace_scsi_generic_read_complete(r->req.tag, len); in scsi_read_complete()
288 scsi_parse_sense_buf(r->req.sense, r->io_header.sb_len_wr); in scsi_read_complete()
297 r->req.cmd.buf[0] == INQUIRY && in scsi_read_complete()
298 (r->req.cmd.buf[1] & 0x01) && in scsi_read_complete()
299 r->req.cmd.buf[2] == 0xb0) { in scsi_read_complete()
321 if (r->req.cmd.buf[0] == READ_CAPACITY_10 && in scsi_read_complete()
325 } else if (r->req.cmd.buf[0] == SERVICE_ACTION_IN_16 && in scsi_read_complete()
326 (r->req.cmd.buf[1] & 31) == SAI_READ_CAPACITY_16) { in scsi_read_complete()
337 (r->req.cmd.buf[0] == MODE_SENSE || in scsi_read_complete()
338 r->req.cmd.buf[0] == MODE_SENSE_10) && in scsi_read_complete()
339 (r->req.cmd.buf[1] & 0x8) == 0) { in scsi_read_complete()
340 if (r->req.cmd.buf[0] == MODE_SENSE) { in scsi_read_complete()
346 if (r->req.cmd.buf[0] == INQUIRY) { in scsi_read_complete()
351 scsi_req_data(&r->req, len); in scsi_read_complete()
352 scsi_req_unref(&r->req); in scsi_read_complete()
356 static void scsi_read_data(SCSIRequest *req) in scsi_read_data() argument
358 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_read_data()
359 SCSIDevice *s = r->req.dev; in scsi_read_data()
362 trace_scsi_generic_read_data(req->tag); in scsi_read_data()
365 scsi_req_ref(&r->req); in scsi_read_data()
381 SCSIDevice *s = r->req.dev; in scsi_write_complete()
385 assert(r->req.aiocb != NULL); in scsi_write_complete()
386 r->req.aiocb = NULL; in scsi_write_complete()
388 if (ret || r->req.io_canceled) { in scsi_write_complete()
393 if (r->req.cmd.buf[0] == MODE_SELECT && r->req.cmd.buf[4] == 12 && in scsi_write_complete()
404 static void scsi_write_data(SCSIRequest *req) in scsi_write_data() argument
406 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_write_data()
407 SCSIDevice *s = r->req.dev; in scsi_write_data()
410 trace_scsi_generic_write_data(req->tag); in scsi_write_data()
413 scsi_req_data(&r->req, r->len); in scsi_write_data()
418 scsi_req_ref(&r->req); in scsi_write_data()
426 static uint8_t *scsi_get_buf(SCSIRequest *req) in scsi_get_buf() argument
428 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_get_buf()
453 static int32_t scsi_send_command(SCSIRequest *req, uint8_t *cmd) in scsi_send_command() argument
455 SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req); in scsi_send_command()
456 SCSIDevice *s = r->req.dev; in scsi_send_command()
460 scsi_generic_command_dump(cmd, r->req.cmd.len); in scsi_send_command()
463 if (r->req.cmd.xfer == 0) { in scsi_send_command()
468 scsi_req_ref(&r->req); in scsi_send_command()
478 if (r->buflen != r->req.cmd.xfer) { in scsi_send_command()
480 r->buf = g_malloc(r->req.cmd.xfer); in scsi_send_command()
481 r->buflen = r->req.cmd.xfer; in scsi_send_command()
485 r->len = r->req.cmd.xfer; in scsi_send_command()
486 if (r->req.cmd.mode == SCSI_XFER_TO_DEV) { in scsi_send_command()
488 return -r->req.cmd.xfer; in scsi_send_command()
490 return r->req.cmd.xfer; in scsi_send_command()