qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: [COMMIT bd83677] Fake dirty loggin when it's not th


From: Anthony Liguori
Subject: Re: [Qemu-devel] Re: [COMMIT bd83677] Fake dirty loggin when it's not there
Date: Wed, 22 Jul 2009 13:15:52 -0500
User-agent: Thunderbird 2.0.0.21 (X11/20090320)

Jan Kiszka wrote:
Signed-off-by: Alexander Graf <address@hidden>
Signed-off-by: Anthony Liguori <aliguori-r/address@hidden>

diff --git a/kvm-all.c b/kvm-all.c
index 961fa32..2032949 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -300,6 +300,7 @@ int kvm_physical_sync_dirty_bitmap(target_phys_addr_t 
start_addr,
     KVMDirtyLog d;
     KVMSlot *mem;
     int ret = 0;
+    int r;
d.dirty_bitmap = NULL;
     while (start_addr < end_addr) {
@@ -308,6 +309,11 @@ int kvm_physical_sync_dirty_bitmap(target_phys_addr_t 
start_addr,
             break;
         }
+ /* We didn't activate dirty logging? Don't care then. */
+        if(!(mem->flags & KVM_MEM_LOG_DIRTY_PAGES)) {
+            continue;
+        }
+

According to Alex' reply [1], I think this is probably better expressed
as an assert() than a silent skip. It indicates an error at higher
level, no?

I don't have a strong opinion either way.

         size = ((mem->memory_size >> TARGET_PAGE_BITS) + 7) / 8;
         if (!d.dirty_bitmap) {
             d.dirty_bitmap = qemu_malloc(size);
@@ -319,7 +325,8 @@ int kvm_physical_sync_dirty_bitmap(target_phys_addr_t 
start_addr,
d.slot = mem->slot; - if (kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d) == -1) {
+        r = kvm_vm_ioctl(s, KVM_GET_DIRTY_LOG, &d);
+        if (r == -EINVAL) {
             dprintf("ioctl failed %d\n", errno);
             ret = -1;
             break;

My remark still stands: This is an "optimistic" assumption that only
EINVAL is a "real" error. If KVM is buggy /wrt a specific invalid return
value, work around that particular bug (and we should also fix the
kernel, but that's a different topic).

The behavior is identical to what it was before. It's just a stylistic change.

I agree that this needs to be properly fixed in KVM and then in QEMU but I also think that that is best done as a separate set of patches.

Regards,

Anthony Liguori




reply via email to

[Prev in Thread] Current Thread [Next in Thread]