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~

Reply via email to