``athlon``, ``kvm32``, ``pentium``, ``pentium2``, ``pentium3``or ``qemu32``)
a warning will be displayed until a future QEMU version when such CPUs will
be rejected.
-
-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.
storage migration with ``blockdev-mirror`` + NBD" in
docs/interop/live-block-operations.rst for a detailed explanation.
+``migrate`` command with file-based ``fd:`` URI (removed in 11.0)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+In order to reduce ambiguity, the ``fd:`` URI usage of providing a
+file descriptor to a plain file has been removed 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.
+
``migrate-set-capabilities`` ``block`` option (removed in 9.1)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#include "qemu/sockets.h"
#include "io/channel-util.h"
#include "trace.h"
+#include "qapi/error.h"
static bool fd_is_pipe(int fd)
{
}
if (!migration_fd_valid(fd)) {
- warn_report("fd: migration to a file is deprecated."
- " Use file: instead.");
+ error_setg(errp, "fd: migration to a file is not supported."
+ " Use file: instead.");
+ return;
}
trace_migration_fd_outgoing(fd);
}
if (!migration_fd_valid(fd)) {
- warn_report("fd: migration to a file is deprecated."
- " Use file: instead.");
+ error_setg(errp, "fd: migration to a file is not supported."
+ " Use file: instead.");
+ return;
}
trace_migration_fd_incoming(fd);
test_precopy_common(args);
}
-
-static void *migrate_hook_start_precopy_fd_file(QTestState *from,
- QTestState *to)
-{
- g_autofree char *file = g_strdup_printf("%s/%s", tmpfs, FILE_TEST_FILENAME);
- int src_flags = O_CREAT | O_RDWR;
- int dst_flags = O_CREAT | O_RDWR;
- int fds[2];
-
- fds[0] = open(file, src_flags, 0660);
- assert(fds[0] != -1);
-
- fds[1] = open(file, dst_flags, 0660);
- assert(fds[1] != -1);
-
-
- qtest_qmp_fds_assert_success(to, &fds[0], 1,
- "{ 'execute': 'getfd',"
- " 'arguments': { 'fdname': 'fd-mig' }}");
-
- qtest_qmp_fds_assert_success(from, &fds[1], 1,
- "{ 'execute': 'getfd',"
- " 'arguments': { 'fdname': 'fd-mig' }}");
-
- close(fds[0]);
- close(fds[1]);
-
- return NULL;
-}
-
-static void test_precopy_fd_file(char *name, MigrateCommon *args)
-{
- args->listen_uri = "defer";
- args->connect_uri = "fd:fd-mig";
- args->start_hook = migrate_hook_start_precopy_fd_file;
- args->end_hook = migrate_hook_end_fd;
-
- test_file_common(args, true);
-}
#endif /* _WIN32 */
/*
#ifndef _WIN32
migration_test_add("/migration/precopy/fd/tcp",
test_precopy_fd_socket);
- migration_test_add("/migration/precopy/fd/file",
- test_precopy_fd_file);
#endif
/*