QEMU-Devel Archive mirror
 help / color / mirror / Atom feed
From: Fabiano Rosas <farosas@suse.de>
To: qemu-devel@nongnu.org
Cc: Peter Xu <peterx@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>
Subject: [PULL v2 12/13] migration: Deprecate fd: for file migration
Date: Wed,  8 May 2024 20:35:40 -0300	[thread overview]
Message-ID: <20240508233541.2403-13-farosas@suse.de> (raw)
In-Reply-To: <20240508233541.2403-1-farosas@suse.de>

The fd: URI can currently trigger two different types of migration, a
TCP migration using sockets and a file migration using a plain
file. This is in conflict with the recently introduced (8.2) QMP
migrate API that takes structured data as JSON-like format. We cannot
keep the same backend for both types of migration because with the new
API the code is more tightly coupled to the type of transport. This
means a TCP migration must use the 'socket' transport and a file
migration must use the 'file' transport.

If we keep allowing fd: when using a file, this creates an issue when
the user converts the old-style (fd:) to the new style ("transport":
"socket") invocation because the file descriptor in question has
previously been allowed to be either a plain file or a socket.

To avoid creating too much confusion, we can simply deprecate the fd:
+ file usage, which is thought to be rarely used currently and instead
establish a 1:1 correspondence between fd: URI and socket transport,
and file: URI and file transport.

Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
 docs/about/deprecated.rst | 14 ++++++++++++++
 migration/fd.c            | 12 ++++++++++++
 2 files changed, 26 insertions(+)

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 64b8f838be..f5f111495b 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -473,3 +473,17 @@ both, older and future versions of QEMU.
 The ``blacklist`` config file option has been renamed to ``block-rpcs``
 (to be in sync with the renaming of the corresponding command line
 option).
+
+Migration
+---------
+
+``fd:`` URI when used for file migration (since 9.1)
+''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``fd:`` URI can currently provide a file descriptor that
+references either a socket or a plain file. These are two different
+types of migration. In order to reduce ambiguity, the ``fd:`` URI
+usage of providing a file descriptor to a plain file has been
+deprecated in favor of explicitly using the ``file:`` URI with the
+file descriptor being passed as an ``fdset``. Refer to the ``add-fd``
+command documentation for details on the ``fdset`` usage.
diff --git a/migration/fd.c b/migration/fd.c
index 449adaa2de..aab5189eac 100644
--- a/migration/fd.c
+++ b/migration/fd.c
@@ -20,6 +20,8 @@
 #include "file.h"
 #include "migration.h"
 #include "monitor/monitor.h"
+#include "qemu/error-report.h"
+#include "qemu/sockets.h"
 #include "io/channel-util.h"
 #include "trace.h"
 
@@ -32,6 +34,11 @@ void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error **
         return;
     }
 
+    if (!fd_is_socket(fd)) {
+        warn_report("fd: migration to a file is deprecated."
+                    " Use file: instead.");
+    }
+
     trace_migration_fd_outgoing(fd);
     ioc = qio_channel_new_fd(fd, errp);
     if (!ioc) {
@@ -61,6 +68,11 @@ void fd_start_incoming_migration(const char *fdname, Error **errp)
         return;
     }
 
+    if (!fd_is_socket(fd)) {
+        warn_report("fd: migration to a file is deprecated."
+                    " Use file: instead.");
+    }
+
     trace_migration_fd_incoming(fd);
 
     ioc = qio_channel_new_fd(fd, errp);
-- 
2.35.3



  parent reply	other threads:[~2024-05-08 23:40 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-08 23:35 [PULL v2 00/13] Migration patches for 2024-05-08 Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 01/13] migration/ram.c: API Conversion qemu_mutex_lock(), and qemu_mutex_unlock() to WITH_QEMU_LOCK_GUARD macro Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 02/13] migration: move trace-point from migrate_fd_error to migrate_set_error Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 03/13] migration: process_incoming_migration_co(): complete cleanup on failure Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 04/13] migration: process_incoming_migration_co(): fix reporting s->error Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 05/13] migration: process_incoming_migration_co(): rework error reporting Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 06/13] qapi: introduce exit-on-error parameter for migrate-incoming Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 07/13] migration: Remove 'skipped' field from MigrationStats Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 08/13] migration: Remove 'inc' option from migrate command Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 09/13] migration: Remove 'blk/-b' option from migrate commands Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 10/13] migration: Remove block migration Fabiano Rosas
2024-05-08 23:35 ` [PULL v2 11/13] migration: Remove non-multifd compression Fabiano Rosas
2024-05-08 23:35 ` Fabiano Rosas [this message]
2024-05-08 23:35 ` [PULL v2 13/13] hmp/migration: Fix "migrate" command's documentation Fabiano Rosas
2024-05-10  5:38 ` [PULL v2 00/13] Migration patches for 2024-05-08 Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240508233541.2403-13-farosas@suse.de \
    --to=farosas@suse.de \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).