static int nocomp_send_prepare(MultiFDSendParams *p, uint32_t used,
Error **errp)
{
+ MultiFDPages_t *pages = p->pages;
+
+ for (int i = 0; i < used; i++) {
+ p->iov[p->iovs_used].iov_base = pages->block->host + pages->offset[i];
+ p->iov[p->iovs_used].iov_len = qemu_target_page_size();
+ p->iovs_used++;
+ }
+
p->next_packet_size = used * qemu_target_page_size();
@@ -154,7 +162,11 @@ static int nocomp_recv_pages(MultiFDRecvParams *p,
uint32_t used, Error **errp)
p->id, flags, MULTIFD_FLAG_NOCOMP);
return -1;
}
- return qio_channel_readv_all(p->c, p->pages->iov, used, errp);
+ for (int i = 0; i < p->pages->used; i++) {
+ p->iov[i].iov_base = p->pages->block->host + p->pages->offset[i];
+ p->iov[i].iov_len = qemu_target_page_size();
+ }