1
0
mirror of https://gitlab.com/qemu-project/qemu synced 2024-07-01 07:14:48 +00:00

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>
This commit is contained in:
Fabiano Rosas 2024-04-30 11:27:37 -03:00
parent 0222111a22
commit c55deb860c
2 changed files with 26 additions and 0 deletions

View File

@ -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.

View File

@ -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);