qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC V1 6/6] migration: cpr-transfer mode


From: Steven Sistare
Subject: Re: [RFC V1 6/6] migration: cpr-transfer mode
Date: Tue, 13 Aug 2024 17:27:53 -0400
User-agent: Mozilla Thunderbird

On 6/30/2024 3:44 PM, Steve Sistare wrote:
Add the cpr-transfer migration mode.  Usage:
[...]
@@ -2144,6 +2158,29 @@ void qmp_migrate(const char *uri, bool has_channels,
          goto out;
      }
+ /*
+     * For cpr-transfer mode, the target first reads CPR state, which cannot
+     * complete until cpr_state_save above finishes, then the target creates
+     * the migration channel and listens.  We must wait for the channel to
+     * be created before connecting to it.
+     *
+     * This implementation of waiting is a hack.  It restricts the channel
+     * type, and will loop forever if the target dies.  It should be defined
+     * as a main-loop event that calls connect on the back end.
+     */
+    if (s->parameters.mode == MIG_MODE_CPR_TRANSFER) {
+        SocketAddress *saddr = &addr->u.socket;
+        if (addr->transport == MIGRATION_ADDRESS_TYPE_SOCKET &&
+            saddr->type == SOCKET_ADDRESS_TYPE_UNIX) {
+            while (access(saddr->u.fd.str, F_OK)) {
+                usleep(1000000);
+            }

I now have a proper fix for this handshake in my work space.

- Steve



reply via email to

[Prev in Thread] Current Thread [Next in Thread]