On 11/19/21 5:58 PM, Juan Quintela wrote:
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();
Compute qemu_target_page_size once in the function. Hoist p->iovs_used to a local variable around the loop.
@@ -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(); + }
Similarly. r~