diff mbox

Enable dirty logging for all regions during migration

Message ID 1242170654-8685-1-git-send-email-glommer@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Glauber Costa May 12, 2009, 11:24 p.m. UTC
From: Glauber de Oliveira Costa <glommer@redhat.com>

In current calculations, we are not activating dirty logging
for all regions, leading migration to fail. This problem was
already raised by Yaniv Kamay a while ago. The proposed
solution at the time (not merged), was a calculation to convert
from target_phys_addr_t to ram_addr_t, which the dirty logging code
expects.

Avi noticed that enabling dirty logging for the region 0 -> -1ULL
would do the trick. As I hit the problem, I can confirm it does.

This patch, therefore, goes with this simpler approach. Before
this patch, migration fails. With this patch, simple migration
tests succeds.

Signed-off-by: Glauber de Oliveira Costa <glommer@redhat.com>
---
 qemu-kvm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Avi Kivity May 13, 2009, 7 a.m. UTC | #1
Glauber Costa wrote:
> From: Glauber de Oliveira Costa <glommer@redhat.com>
>
> In current calculations, we are not activating dirty logging
> for all regions, leading migration to fail. This problem was
> already raised by Yaniv Kamay a while ago. The proposed
> solution at the time (not merged), was a calculation to convert
> from target_phys_addr_t to ram_addr_t, which the dirty logging code
> expects.
>
> Avi noticed that enabling dirty logging for the region 0 -> -1ULL
> would do the trick. As I hit the problem, I can confirm it does.
>
> This patch, therefore, goes with this simpler approach. Before
> this patch, migration fails. With this patch, simple migration
> tests succeds.
>
>   

Applied, thanks.
diff mbox

Patch

diff --git a/qemu-kvm.c b/qemu-kvm.c
index f55cee8..b5d4313 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -1244,7 +1244,7 @@  int kvm_update_dirty_pages_log(void)
     int r = 0;
 
 
-    r = kvm_get_dirty_pages_range(kvm_context, 0, phys_ram_size,
+    r = kvm_get_dirty_pages_range(kvm_context, 0, -1ULL,
                                   kvm_dirty_bitmap, NULL,
                                   kvm_get_dirty_bitmap_cb);
     return r;