From: Zhang Chen <chen.zhang@intel.com>
I found upstream codes conflict with COLO and lead to crash,
and I located to this patch:
commit 386a907b37a9321bc5d699bc37104d6ffba1b34d
Author: Wei Wang <wei.w.wang@intel.com>
Date: Tue Dec 11 16:24:49 2018 +0800
migration: use bitmap_mutex in migration_bitmap_clear_dirty
My colleague Wei's patch add bitmap_mutex in migration_bitmap_clear_dirty,
but COLO didn't initialize the bitmap_mutex. So we always get an error
when COLO start up. like that:
qemu-system-x86_64: util/qemu-thread-posix.c:64: qemu_mutex_lock_impl: Assertion `mutex->initialized' failed.
This patch add the bitmap_mutex initialize and destroy in COLO
lifecycle.
Signed-off-by: Zhang Chen <chen.zhang@intel.com>
---
migration/ram.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/migration/ram.c b/migration/ram.c
index d7f8fe45a8..f68beeeeff 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3918,6 +3918,7 @@ int colo_init_ram_cache(void)
}
ram_state = g_new0(RAMState, 1);
ram_state->migration_dirty_pages = 0;
+ qemu_mutex_init(&ram_state->bitmap_mutex);
memory_global_dirty_log_start();
return 0;
@@ -3956,6 +3957,7 @@ void colo_release_ram_cache(void)
}
rcu_read_unlock();
+ qemu_mutex_destroy(&ram_state->bitmap_mutex);
g_free(ram_state);
ram_state = NULL;
}
--
2.17.GIT
On 03/30/2019 06:29 AM, Zhang Chen wrote: > From: Zhang Chen <chen.zhang@intel.com> > > I found upstream codes conflict with COLO and lead to crash, > and I located to this patch: > > commit 386a907b37a9321bc5d699bc37104d6ffba1b34d > Author: Wei Wang <wei.w.wang@intel.com> > Date: Tue Dec 11 16:24:49 2018 +0800 > > migration: use bitmap_mutex in migration_bitmap_clear_dirty > > My colleague Wei's patch add bitmap_mutex in migration_bitmap_clear_dirty, > but COLO didn't initialize the bitmap_mutex. So we always get an error > when COLO start up. like that: > qemu-system-x86_64: util/qemu-thread-posix.c:64: qemu_mutex_lock_impl: Assertion `mutex->initialized' failed. > > This patch add the bitmap_mutex initialize and destroy in COLO > lifecycle. > > Signed-off-by: Zhang Chen <chen.zhang@intel.com> > --- > migration/ram.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/migration/ram.c b/migration/ram.c > index d7f8fe45a8..f68beeeeff 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -3918,6 +3918,7 @@ int colo_init_ram_cache(void) > } > ram_state = g_new0(RAMState, 1); > ram_state->migration_dirty_pages = 0; > + qemu_mutex_init(&ram_state->bitmap_mutex); > memory_global_dirty_log_start(); > > return 0; > @@ -3956,6 +3957,7 @@ void colo_release_ram_cache(void) > } > > rcu_read_unlock(); > + qemu_mutex_destroy(&ram_state->bitmap_mutex); > g_free(ram_state); > ram_state = NULL; > } Reviewed-by: Wei Wang <wei.w.wang@intel.com> Best, Wei
Ping~ Anyone have comments about this patch? Thanks Zhang Chen > -----Original Message----- > From: Wang, Wei W > Sent: Monday, April 1, 2019 5:12 PM > To: Zhang, Chen <chen.zhang@intel.com>; Zhang Chen > <zhangckid@gmail.com>; Dr. David Alan Gilbert <dgilbert@redhat.com>; Juan > Quintela <quintela@redhat.com>; qemu-dev <qemu-devel@nongnu.org> > Subject: Re: [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex > > On 03/30/2019 06:29 AM, Zhang Chen wrote: > > From: Zhang Chen <chen.zhang@intel.com> > > > > I found upstream codes conflict with COLO and lead to crash, and I > > located to this patch: > > > > commit 386a907b37a9321bc5d699bc37104d6ffba1b34d > > Author: Wei Wang <wei.w.wang@intel.com> > > Date: Tue Dec 11 16:24:49 2018 +0800 > > > > migration: use bitmap_mutex in migration_bitmap_clear_dirty > > > > My colleague Wei's patch add bitmap_mutex in > > migration_bitmap_clear_dirty, but COLO didn't initialize the > > bitmap_mutex. So we always get an error when COLO start up. like that: > > qemu-system-x86_64: util/qemu-thread-posix.c:64: qemu_mutex_lock_impl: > Assertion `mutex->initialized' failed. > > > > This patch add the bitmap_mutex initialize and destroy in COLO > > lifecycle. > > > > Signed-off-by: Zhang Chen <chen.zhang@intel.com> > > --- > > migration/ram.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/migration/ram.c b/migration/ram.c index > > d7f8fe45a8..f68beeeeff 100644 > > --- a/migration/ram.c > > +++ b/migration/ram.c > > @@ -3918,6 +3918,7 @@ int colo_init_ram_cache(void) > > } > > ram_state = g_new0(RAMState, 1); > > ram_state->migration_dirty_pages = 0; > > + qemu_mutex_init(&ram_state->bitmap_mutex); > > memory_global_dirty_log_start(); > > > > return 0; > > @@ -3956,6 +3957,7 @@ void colo_release_ram_cache(void) > > } > > > > rcu_read_unlock(); > > + qemu_mutex_destroy(&ram_state->bitmap_mutex); > > g_free(ram_state); > > ram_state = NULL; > > } > > Reviewed-by: Wei Wang <wei.w.wang@intel.com> > > Best, > Wei
* Zhang, Chen (chen.zhang@intel.com) wrote: > Ping~ Anyone have comments about this patch? No, it looks good to me, we need to get it merged. Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > Thanks > Zhang Chen > > > > -----Original Message----- > > From: Wang, Wei W > > Sent: Monday, April 1, 2019 5:12 PM > > To: Zhang, Chen <chen.zhang@intel.com>; Zhang Chen > > <zhangckid@gmail.com>; Dr. David Alan Gilbert <dgilbert@redhat.com>; Juan > > Quintela <quintela@redhat.com>; qemu-dev <qemu-devel@nongnu.org> > > Subject: Re: [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex > > > > On 03/30/2019 06:29 AM, Zhang Chen wrote: > > > From: Zhang Chen <chen.zhang@intel.com> > > > > > > I found upstream codes conflict with COLO and lead to crash, and I > > > located to this patch: > > > > > > commit 386a907b37a9321bc5d699bc37104d6ffba1b34d > > > Author: Wei Wang <wei.w.wang@intel.com> > > > Date: Tue Dec 11 16:24:49 2018 +0800 > > > > > > migration: use bitmap_mutex in migration_bitmap_clear_dirty > > > > > > My colleague Wei's patch add bitmap_mutex in > > > migration_bitmap_clear_dirty, but COLO didn't initialize the > > > bitmap_mutex. So we always get an error when COLO start up. like that: > > > qemu-system-x86_64: util/qemu-thread-posix.c:64: qemu_mutex_lock_impl: > > Assertion `mutex->initialized' failed. > > > > > > This patch add the bitmap_mutex initialize and destroy in COLO > > > lifecycle. > > > > > > Signed-off-by: Zhang Chen <chen.zhang@intel.com> > > > --- > > > migration/ram.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/migration/ram.c b/migration/ram.c index > > > d7f8fe45a8..f68beeeeff 100644 > > > --- a/migration/ram.c > > > +++ b/migration/ram.c > > > @@ -3918,6 +3918,7 @@ int colo_init_ram_cache(void) > > > } > > > ram_state = g_new0(RAMState, 1); > > > ram_state->migration_dirty_pages = 0; > > > + qemu_mutex_init(&ram_state->bitmap_mutex); > > > memory_global_dirty_log_start(); > > > > > > return 0; > > > @@ -3956,6 +3957,7 @@ void colo_release_ram_cache(void) > > > } > > > > > > rcu_read_unlock(); > > > + qemu_mutex_destroy(&ram_state->bitmap_mutex); > > > g_free(ram_state); > > > ram_state = NULL; > > > } > > > > Reviewed-by: Wei Wang <wei.w.wang@intel.com> > > > > Best, > > Wei -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
* Zhang Chen (chen.zhang@intel.com) wrote: > From: Zhang Chen <chen.zhang@intel.com> > > I found upstream codes conflict with COLO and lead to crash, > and I located to this patch: Queued. > > commit 386a907b37a9321bc5d699bc37104d6ffba1b34d > Author: Wei Wang <wei.w.wang@intel.com> > Date: Tue Dec 11 16:24:49 2018 +0800 > > migration: use bitmap_mutex in migration_bitmap_clear_dirty > > My colleague Wei's patch add bitmap_mutex in migration_bitmap_clear_dirty, > but COLO didn't initialize the bitmap_mutex. So we always get an error > when COLO start up. like that: > qemu-system-x86_64: util/qemu-thread-posix.c:64: qemu_mutex_lock_impl: Assertion `mutex->initialized' failed. > > This patch add the bitmap_mutex initialize and destroy in COLO > lifecycle. > > Signed-off-by: Zhang Chen <chen.zhang@intel.com> > --- > migration/ram.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/migration/ram.c b/migration/ram.c > index d7f8fe45a8..f68beeeeff 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -3918,6 +3918,7 @@ int colo_init_ram_cache(void) > } > ram_state = g_new0(RAMState, 1); > ram_state->migration_dirty_pages = 0; > + qemu_mutex_init(&ram_state->bitmap_mutex); > memory_global_dirty_log_start(); > > return 0; > @@ -3956,6 +3957,7 @@ void colo_release_ram_cache(void) > } > > rcu_read_unlock(); > + qemu_mutex_destroy(&ram_state->bitmap_mutex); > g_free(ram_state); > ram_state = NULL; > } > -- > 2.17.GIT > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
© 2016 - 2024 Red Hat, Inc.