]> git.proxmox.com Git - mirror_qemu.git/blobdiff - migration/multifd-zero-page.c
migration/multifd: solve zero page causing multiple page faults
[mirror_qemu.git] / migration / multifd-zero-page.c
index 1ba38be63613614db5a0eee9e71d5564dae2e7fd..e1b8370f88e1ef91d98eb2375b242327c7c5bdc4 100644 (file)
@@ -80,8 +80,10 @@ void multifd_recv_zero_page_process(MultiFDRecvParams *p)
 {
     for (int i = 0; i < p->zero_num; i++) {
         void *page = p->host + p->zero[i];
-        if (!buffer_is_zero(page, p->page_size)) {
+        if (ramblock_recv_bitmap_test_byte_offset(p->block, p->zero[i])) {
             memset(page, 0, p->page_size);
+        } else {
+            ramblock_recv_bitmap_set_offset(p->block, p->zero[i]);
         }
     }
 }