[PATCH v4 10/16] Call colo_release_ram_cache() after multifd threads terminate

Lukas Straub posted 16 patches 1 week, 3 days ago
Maintainers: Pierrick Bouvier <pierrick.bouvier@linaro.org>, Lukas Straub <lukasstraub2@web.de>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
There is a newer version of this series
[PATCH v4 10/16] Call colo_release_ram_cache() after multifd threads terminate
Posted by Lukas Straub 1 week, 3 days ago
The multifd threads still may access the colo cache, so release it
only after they terminate.

Signed-off-by: Lukas Straub <lukasstraub2@web.de>
---
 migration/colo.c      | 3 ---
 migration/migration.c | 3 +++
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/migration/colo.c b/migration/colo.c
index 8dfd39b035c48590fcebeb20459f01fb37fb67d1..d3534d1a32ad82f02101ac092ebf818a0caee6f2 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -947,7 +947,4 @@ void coroutine_fn colo_incoming_co(void)
     /* Wait checkpoint incoming thread exit before free resource */
     qemu_thread_join(&th);
     bql_lock();
-
-    /* We hold the global BQL, so it is safe here */
-    colo_release_ram_cache();
 }
diff --git a/migration/migration.c b/migration/migration.c
index 5515be1bf305b40ba0b590136df18a53451872c5..9e3f73f27766196ea8673bf9a58c97d5b8b1672f 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -454,6 +454,9 @@ void migration_incoming_state_destroy(void)
      * BQL and retake unconditionally.
      */
     assert(bql_locked());
+    if (migrate_colo()) {
+        colo_release_ram_cache();
+    }
     qemu_loadvm_state_cleanup(mis);
 
     if (mis->to_src_file) {

-- 
2.39.5
Re: [PATCH v4 10/16] Call colo_release_ram_cache() after multifd threads terminate
Posted by Fabiano Rosas 1 week ago
Lukas Straub <lukasstraub2@web.de> writes:

> The multifd threads still may access the colo cache, so release it
> only after they terminate.
>
> Signed-off-by: Lukas Straub <lukasstraub2@web.de>
> ---
>  migration/colo.c      | 3 ---
>  migration/migration.c | 3 +++
>  2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/migration/colo.c b/migration/colo.c
> index 8dfd39b035c48590fcebeb20459f01fb37fb67d1..d3534d1a32ad82f02101ac092ebf818a0caee6f2 100644
> --- a/migration/colo.c
> +++ b/migration/colo.c
> @@ -947,7 +947,4 @@ void coroutine_fn colo_incoming_co(void)
>      /* Wait checkpoint incoming thread exit before free resource */
>      qemu_thread_join(&th);
>      bql_lock();
> -
> -    /* We hold the global BQL, so it is safe here */
> -    colo_release_ram_cache();
>  }
> diff --git a/migration/migration.c b/migration/migration.c
> index 5515be1bf305b40ba0b590136df18a53451872c5..9e3f73f27766196ea8673bf9a58c97d5b8b1672f 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -454,6 +454,9 @@ void migration_incoming_state_destroy(void)
>       * BQL and retake unconditionally.
>       */
>      assert(bql_locked());
> +    if (migrate_colo()) {
> +        colo_release_ram_cache();
> +    }
>      qemu_loadvm_state_cleanup(mis);
>  
>      if (mis->to_src_file) {

Reviewed-by: Fabiano Rosas <farosas@suse.de>