Hi,

On Tue, 4 Mar 2025 at 20:05, Peter Xu <pet...@redhat.com> wrote:
> I think we need the header, the ram is a module.
> Do similarly like qemu_savevm_state_complete_precopy_iterable() but do
> whatever a vmstate hander wants, so it'll be with a header.

* I don't fully see yet how this shall work.

> Please consider adding details like "we need message AAA on BBB channel to
> serialize with CCC" and details.  Not asking that as required to merge, but
> my understanding is that that's what is missing and that's why none of yet
> versions can make sure of it in code.  Maybe that'll help you to understand
> how that was serialized.

* Okay, will try.

>
> MULTIFD_SYNC_LOCAL will not invoke MULTIFD_FLAG_SYNC, which we need.
...
> So is it your intention to not send MULTIFD_FLAG_SYNC above?
> In all cases, I still think that's not the right way to do.

* It makes little difference; MULTIFD_FLAG_SYNC is also used to
increase 'multifd_recv_state->sem_sync' semaphore on the destination
side, which then unblocks the 'main' thread waiting on it.
===
diff --git a/migration/migration.c b/migration/migration.c
index 65fc4f5eed..d8c4ea0ad1 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3402,7 +3402,7 @@ static MigIterateState
migration_iteration_run(MigrationState *s)
         && can_switchover && qatomic_read(&s->start_postcopy)) {
         if (migrate_multifd()) {
             multifd_send_flush();
-            multifd_send_sync_main(MULTIFD_SYNC_LOCAL);
+            multifd_send_sync_main(MULTIFD_SYNC_ALL);
             qemu_savevm_send_multifd_recv_sync(s->to_dst_file);
             multifd_send_shutdown();
         }
diff --git a/migration/multifd.c b/migration/multifd.c
index 8928ca2611..2b5bc2d478 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -1265,7 +1265,7 @@ static void *multifd_recv_thread(void *opaque)

     rcu_unregister_thread();
     trace_multifd_recv_thread_end(p->id, p->packets_recved);
-    qemu_sem_post(&multifd_recv_state->sem_sync);
+//  qemu_sem_post(&multifd_recv_state->sem_sync);

     return NULL;
 }
===
host-1] 63/63 qemu:qtest+qtest-x86_64 / qtest-x86_64/migration-test
             OK             159.46s   79 subtests passed
host-2] 63/63 qemu:qtest+qtest-x86_64 / qtest-x86_64/migration-test
             OK             164.55s   79 subtests passed
===

* I tried the above patch and it also works the same. I'll use this, no issues.

Thank you.
---
  - Prasad


Reply via email to