Re: [PATCH V2 2/2] migration: save/delete migration thread info

2023-02-03 Thread Juan Quintela
Jiang Jiacheng  wrote:
> To support query migration thread infomation, save and delete
> thread(live_migration and multifdsend) information at thread
> creation and finish.
>
> Signed-off-by: Jiang Jiacheng 

Reviewed-by: Juan Quintela 




[PATCH V2 2/2] migration: save/delete migration thread info

2023-02-02 Thread Jiang Jiacheng via
To support query migration thread infomation, save and delete
thread(live_migration and multifdsend) information at thread
creation and finish.

Signed-off-by: Jiang Jiacheng 
---
 migration/migration.c | 5 +
 migration/multifd.c   | 5 +
 2 files changed, 10 insertions(+)

diff --git a/migration/migration.c b/migration/migration.c
index 52b5d39244..cf895b1a3d 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,13 @@ 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());
+
 rcu_register_thread();
 
 object_ref(OBJECT(s));
@@ -4031,6 +4035,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 000ca4d4ec..c350547562 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -24,6 +24,7 @@
 #include "qemu-file.h"
 #include "trace.h"
 #include "multifd.h"
+#include "threadinfo.h"
 
 #include "qemu/yank.h"
 #include "io/channel-socket.h"
@@ -646,10 +647,13 @@ 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());
+
 trace_multifd_send_thread_start(p->id);
 rcu_register_thread();
 
@@ -759,6 +763,7 @@ out:
 qemu_mutex_unlock(>mutex);
 
 rcu_unregister_thread();
+MigrationThreadDel(thread);
 trace_multifd_send_thread_end(p->id, p->num_packets, 
p->total_normal_pages);
 
 return NULL;
-- 
2.33.0