mirror of
https://github.com/qemu/qemu.git
synced 2025-08-09 19:15:32 +00:00
virtio-scsi: add extra argument and return type to qemu_sgl_concat
Will be used for anylayout support. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
b0b4ea17dc
commit
57fbae6e2c
@ -95,14 +95,27 @@ static void virtio_scsi_bad_req(void)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void qemu_sgl_concat(VirtIOSCSIReq *req, struct iovec *sg,
|
static size_t qemu_sgl_concat(VirtIOSCSIReq *req, struct iovec *iov,
|
||||||
hwaddr *addr, int num)
|
hwaddr *addr, int num, size_t skip)
|
||||||
{
|
{
|
||||||
QEMUSGList *qsgl = &req->qsgl;
|
QEMUSGList *qsgl = &req->qsgl;
|
||||||
|
size_t copied = 0;
|
||||||
|
|
||||||
while (num--) {
|
while (num) {
|
||||||
qemu_sglist_add(qsgl, *(addr++), (sg++)->iov_len);
|
if (skip >= iov->iov_len) {
|
||||||
|
skip -= iov->iov_len;
|
||||||
|
} else {
|
||||||
|
qemu_sglist_add(qsgl, *addr + skip, iov->iov_len - skip);
|
||||||
|
copied += iov->iov_len - skip;
|
||||||
|
skip = 0;
|
||||||
|
}
|
||||||
|
iov++;
|
||||||
|
addr++;
|
||||||
|
num--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert(skip == 0);
|
||||||
|
return copied;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int virtio_scsi_parse_req(VirtIOSCSIReq *req,
|
static int virtio_scsi_parse_req(VirtIOSCSIReq *req,
|
||||||
@ -127,11 +140,11 @@ static int virtio_scsi_parse_req(VirtIOSCSIReq *req,
|
|||||||
if (req->elem.out_num > 1) {
|
if (req->elem.out_num > 1) {
|
||||||
qemu_sgl_concat(req, &req->elem.out_sg[1],
|
qemu_sgl_concat(req, &req->elem.out_sg[1],
|
||||||
&req->elem.out_addr[1],
|
&req->elem.out_addr[1],
|
||||||
req->elem.out_num - 1);
|
req->elem.out_num - 1, 0);
|
||||||
} else {
|
} else {
|
||||||
qemu_sgl_concat(req, &req->elem.in_sg[1],
|
qemu_sgl_concat(req, &req->elem.in_sg[1],
|
||||||
&req->elem.in_addr[1],
|
&req->elem.in_addr[1],
|
||||||
req->elem.in_num - 1);
|
req->elem.in_num - 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user