aboutsummaryrefslogtreecommitdiffstats
path: root/migration
diff options
context:
space:
mode:
authorFabiano Rosas <farosas@suse.de>2024-04-30 11:27:37 -0300
committerFabiano Rosas <farosas@suse.de>2024-05-08 09:20:59 -0300
commitc55deb860ce54cc5ecebb5f170fea85969cb6aad (patch)
treeb804de48ed7b4108addf00e984cebf06825bc952 /migration
parentmigration: Remove non-multifd compression (diff)
downloadqemu-c55deb860ce54cc5ecebb5f170fea85969cb6aad.tar.xz
qemu-c55deb860ce54cc5ecebb5f170fea85969cb6aad.zip
migration: Deprecate fd: for file migration
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>
Diffstat (limited to 'migration')
-rw-r--r--migration/fd.c12
1 files changed, 12 insertions, 0 deletions
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);