Jiang Jiacheng <jiangjiach...@huawei.com> wrote:
> To support query migration thread infomation, save and delete
> thread information at thread creation and end.
>
> Signed-off-by: Jiang Jiacheng <jiangjiach...@huawei.com>

Don't disagree with this, but if we create this on the sending side, why
this is not needed for the multifd_recv_threads?

Later, Juan.

> ---
>  migration/migration.c | 4 ++++
>  migration/multifd.c   | 4 ++++
>  2 files changed, 8 insertions(+)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index b4ce458bb9..957205e693 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -57,6 +57,7 @@
>  #include "net/announce.h"
>  #include "qemu/queue.h"
>  #include "multifd.h"
> +#include "threadinfo.h"
>  #include "qemu/yank.h"
>  #include "sysemu/cpus.h"
>  #include "yank_functions.h"
> @@ -3951,10 +3952,12 @@ static void qemu_savevm_wait_unplug(MigrationState 
> *s, int old_state,
>  static void *migration_thread(void *opaque)
>  {
>      MigrationState *s = opaque;
> +    MigrationThread *thread = NULL;
>      int64_t setup_start = qemu_clock_get_ms(QEMU_CLOCK_HOST);
>      MigThrError thr_error;
>      bool urgent = false;
>  
> +    thread = MigrationThreadAdd("live_migration", qemu_get_thread_id());
>      /* report migration thread name to libvirt */
>      qapi_event_send_migration_name("live_migration");
>  
> @@ -4034,6 +4037,7 @@ static void *migration_thread(void *opaque)
>      migration_iteration_finish(s);
>      object_unref(OBJECT(s));
>      rcu_unregister_thread();
> +    MigrationThreadDel(thread);
>      return NULL;
>  }


>  
> diff --git a/migration/multifd.c b/migration/multifd.c
> index 6e834c7111..fca06284de 100644
> --- a/migration/multifd.c
> +++ b/migration/multifd.c
> @@ -25,6 +25,7 @@
>  #include "qemu-file.h"
>  #include "trace.h"
>  #include "multifd.h"
> +#include "threadinfo.h"
>  #include "qemu/yank.h"
>  #include "io/channel-socket.h"
>  #include "yank_functions.h"
> @@ -646,10 +647,12 @@ int multifd_send_sync_main(QEMUFile *f)
>  static void *multifd_send_thread(void *opaque)
>  {
>      MultiFDSendParams *p = opaque;
> +    MigrationThread *thread = NULL;
>      Error *local_err = NULL;
>      int ret = 0;
>      bool use_zero_copy_send = migrate_use_zero_copy_send();
>  
> +    thread = MigrationThreadAdd(p->name, qemu_get_thread_id());
>      /* report multifd thread name to libvirt */
>      qapi_event_send_migration_name(p->name);
>  
> @@ -762,6 +765,7 @@ out:
>      qemu_mutex_unlock(&p->mutex);
>  
>      rcu_unregister_thread();
> +    MigrationThreadDel(thread);
>      trace_multifd_send_thread_end(p->id, p->num_packets, 
> p->total_normal_pages);
>  
>      return NULL;


Reply via email to