Report migration thread name to libvirt in order to
support query migration thread infomation by its name.
Signed-off-by: Jiang Jiacheng <jiangjiacheng@huawei.com>
---
migration/migration.c | 3 +++
migration/multifd.c | 5 ++++-
qapi/migration.json | 12 ++++++++++++
3 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/migration/migration.c b/migration/migration.c
index 52b5d39244..b4ce458bb9 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3955,6 +3955,9 @@ static void *migration_thread(void *opaque)
MigThrError thr_error;
bool urgent = false;
+ /* report migration thread name to libvirt */
+ qapi_event_send_migration_name("live_migration");
+
rcu_register_thread();
object_ref(OBJECT(s));
diff --git a/migration/multifd.c b/migration/multifd.c
index 000ca4d4ec..6e834c7111 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -17,6 +17,7 @@
#include "exec/ramblock.h"
#include "qemu/error-report.h"
#include "qapi/error.h"
+#include "qapi/qapi-events-migration.h"
#include "ram.h"
#include "migration.h"
#include "socket.h"
@@ -24,7 +25,6 @@
#include "qemu-file.h"
#include "trace.h"
#include "multifd.h"
-
#include "qemu/yank.h"
#include "io/channel-socket.h"
#include "yank_functions.h"
@@ -650,6 +650,9 @@ static void *multifd_send_thread(void *opaque)
int ret = 0;
bool use_zero_copy_send = migrate_use_zero_copy_send();
+ /* report multifd thread name to libvirt */
+ qapi_event_send_migration_name(p->name);
+
trace_multifd_send_thread_start(p->id);
rcu_register_thread();
diff --git a/qapi/migration.json b/qapi/migration.json
index 88ecf86ac8..b0cf366ac0 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -1286,6 +1286,18 @@
{ 'event': 'MIGRATION_PASS',
'data': { 'pass': 'int' } }
+##
+# @MIGRATION_NAME:
+#
+# Emitted when migration thread appear
+#
+# @name: name of migration thread
+#
+# Since: 7.2
+##
+{ 'event': 'MIGRATION_NAME',
+ 'data': { 'name': 'str' } }
+
##
# @COLOMessage:
#
--
2.33.0
Jiang Jiacheng <jiangjiacheng@huawei.com> wrote:
> Report migration thread name to libvirt in order to
> support query migration thread infomation by its name.
>
> Signed-off-by: Jiang Jiacheng <jiangjiacheng@huawei.com>
> ---
> migration/migration.c | 3 +++
> migration/multifd.c | 5 ++++-
> qapi/migration.json | 12 ++++++++++++
> 3 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 52b5d39244..b4ce458bb9 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -3955,6 +3955,9 @@ static void *migration_thread(void *opaque)
> MigThrError thr_error;
> bool urgent = false;
>
> + /* report migration thread name to libvirt */
> + qapi_event_send_migration_name("live_migration");
> +
> rcu_register_thread();
>
> object_ref(OBJECT(s));
I am not sure about this.
This is not an event, in my point of view.
What is the problem adding it to info migrate or similar?
Looks more logical to me.
Later, Juan.
On 2023/1/30 12:19, Juan Quintela wrote:
> Jiang Jiacheng <jiangjiacheng@huawei.com> wrote:
>> Report migration thread name to libvirt in order to
>> support query migration thread infomation by its name.
>>
>> Signed-off-by: Jiang Jiacheng <jiangjiacheng@huawei.com>
>> ---
>> migration/migration.c | 3 +++
>> migration/multifd.c | 5 ++++-
>> qapi/migration.json | 12 ++++++++++++
>> 3 files changed, 19 insertions(+), 1 deletion(-)
>>
>> diff --git a/migration/migration.c b/migration/migration.c
>> index 52b5d39244..b4ce458bb9 100644
>> --- a/migration/migration.c
>> +++ b/migration/migration.c
>> @@ -3955,6 +3955,9 @@ static void *migration_thread(void *opaque)
>> MigThrError thr_error;
>> bool urgent = false;
>>
>> + /* report migration thread name to libvirt */
>> + qapi_event_send_migration_name("live_migration");
>> +
>> rcu_register_thread();
>>
>> object_ref(OBJECT(s));
>
> I am not sure about this.
> This is not an event, in my point of view.
>
> What is the problem adding it to info migrate or similar?
> Looks more logical to me.
I want to implement an interface for libvirt to proactively query
information about migration threads. And this event is used to notify
libvirt that the thread has been created and to provide the thread name
for subsequent operations of querying specified thread's information.
Thanks, Jiang Jiacheng
>
> Later, Juan.
>
© 2016 - 2026 Red Hat, Inc.