[Qemu-devel] [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex

Zhang Chen posted 1 patch 5 years ago
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test checkpatch passed
Test asan passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190329222951.28945-1-chen.zhang@intel.com
Maintainers: Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
migration/ram.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex
Posted by Zhang Chen 5 years ago
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


Re: [Qemu-devel] [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex
Posted by Wei Wang 5 years ago
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

Re: [Qemu-devel] [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex
Posted by Zhang, Chen 5 years ago
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

Re: [Qemu-devel] [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex
Posted by Dr. David Alan Gilbert 5 years ago
* 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

Re: [Qemu-devel] [PATCH] migration/ram.c: Fix codes conflict about bitmap_mutex
Posted by Dr. David Alan Gilbert 5 years ago
* 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