]> git.proxmox.com Git - qemu.git/commitdiff
Instead of writing a zero page, madvise it away
authorAnthony Liguori <aliguori@us.ibm.com>
Wed, 17 Jun 2009 21:46:12 +0000 (16:46 -0500)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 22 Jun 2009 15:15:28 +0000 (10:15 -0500)
Otherwise, after migration, we end up with a much larger RSS size then we
ought to have.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
vl.c

diff --git a/vl.c b/vl.c
index 2d9f04e4c2aad26ca81b8f22fa1e0d7c1cd4827e..ca26450e305fab21c9bc1c3334a0a93ca183b3ad 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -3346,6 +3346,12 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
         
         if (flags & RAM_SAVE_FLAG_COMPRESS) {
             uint8_t ch = qemu_get_byte(f);
+#if defined(__linux__)
+            if (ch == 0 &&
+                (!kvm_enabled() || kvm_has_sync_mmu())) {
+                madvise(qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE, MADV_DONTNEED);
+            } else
+#endif
             memset(qemu_get_ram_ptr(addr), ch, TARGET_PAGE_SIZE);
         } else if (flags & RAM_SAVE_FLAG_PAGE)
             qemu_get_buffer(f, qemu_get_ram_ptr(addr), TARGET_PAGE_SIZE);