Revision 0c34459b hw/spapr_vscsi.c
b/hw/spapr_vscsi.c | ||
---|---|---|
74 | 74 |
union viosrp_iu iu; |
75 | 75 |
|
76 | 76 |
/* SCSI request tracking */ |
77 |
SCSIDevice *sdev; |
|
78 | 77 |
SCSIRequest *sreq; |
79 | 78 |
uint32_t qtag; /* qemu tag != srp tag */ |
80 | 79 |
int lun; |
... | ... | |
476 | 475 |
{ |
477 | 476 |
VSCSIState *s = DO_UPCAST(VSCSIState, vdev.qdev, sreq->bus->qbus.parent); |
478 | 477 |
vscsi_req *req = vscsi_find_req(s, sreq); |
479 |
SCSIDevice *sdev; |
|
480 | 478 |
uint8_t *buf; |
481 | 479 |
int32_t res_in = 0, res_out = 0; |
482 | 480 |
int len, rc = 0; |
... | ... | |
487 | 485 |
fprintf(stderr, "VSCSI: Can't find request for tag 0x%x\n", sreq->tag); |
488 | 486 |
return; |
489 | 487 |
} |
490 |
sdev = req->sdev; |
|
491 | 488 |
|
492 | 489 |
if (req->sensing) { |
493 | 490 |
if (reason == SCSI_REASON_DONE) { |
... | ... | |
495 | 492 |
vscsi_send_rsp(s, req, CHECK_CONDITION, 0, 0); |
496 | 493 |
vscsi_put_req(s, req); |
497 | 494 |
} else { |
498 |
uint8_t *buf = sdev->info->get_buf(sreq);
|
|
495 |
uint8_t *buf = scsi_req_get_buf(sreq);
|
|
499 | 496 |
|
500 | 497 |
len = MIN(arg, SCSI_SENSE_BUF_SIZE); |
501 | 498 |
dprintf("VSCSI: Sense data, %d bytes:\n", len); |
... | ... | |
539 | 536 |
* to write for writes (ie, how much is to be DMA'd) |
540 | 537 |
*/ |
541 | 538 |
if (arg) { |
542 |
buf = sdev->info->get_buf(sreq);
|
|
539 |
buf = scsi_req_get_buf(sreq);
|
|
543 | 540 |
rc = vscsi_srp_transfer_data(s, req, req->writing, buf, arg); |
544 | 541 |
} |
545 | 542 |
if (rc < 0) { |
... | ... | |
646 | 643 |
} return 1; |
647 | 644 |
} |
648 | 645 |
|
649 |
req->sdev = sdev; |
|
650 | 646 |
req->lun = lun; |
651 | 647 |
req->sreq = scsi_req_new(sdev, req->qtag, lun); |
652 | 648 |
n = scsi_req_enqueue(req->sreq, srp->cmd.cdb); |
Also available in: Unified diff