This feature was deprecated in 9.1. Remove it in this release (11.0).
Signed-off-by: Peter Xu <peterx@redhat.com>
---
docs/about/deprecated.rst | 11 -----------
docs/about/removed-features.rst | 9 +++++++++
migration/fd.c | 11 +++++++----
3 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 6e4e2e4833..76ac735315 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -564,17 +564,6 @@ 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.
-
COLO migration framework (since 11.0)
'''''''''''''''''''''''''''''''''''''
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index 8a9d21068a..538914ef00 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -710,6 +710,15 @@ Use blockdev-mirror with NBD instead. See "QMP invocation for live
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)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
diff --git a/migration/fd.c b/migration/fd.c
index 9bf9be6acb..fdeece2101 100644
--- a/migration/fd.c
+++ b/migration/fd.c
@@ -24,6 +24,7 @@
#include "qemu/sockets.h"
#include "io/channel-util.h"
#include "trace.h"
+#include "qapi/error.h"
static bool fd_is_pipe(int fd)
{
@@ -58,8 +59,9 @@ void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error **
}
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);
@@ -92,8 +94,9 @@ void fd_start_incoming_migration(const char *fdname, Error **errp)
}
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);
--
2.50.1
On Thu, 15 Jan 2026 at 01:30, Peter Xu <peterx@redhat.com> wrote:
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
> docs/about/deprecated.rst | 11 -----------
> docs/about/removed-features.rst | 9 +++++++++
> migration/fd.c | 11 +++++++----
> 3 files changed, 16 insertions(+), 15 deletions(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 6e4e2e4833..76ac735315 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -564,17 +564,6 @@ 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.
> -
> COLO migration framework (since 11.0)
> '''''''''''''''''''''''''''''''''''''
>
> diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
> index 8a9d21068a..538914ef00 100644
> --- a/docs/about/removed-features.rst
> +++ b/docs/about/removed-features.rst
> @@ -710,6 +710,15 @@ Use blockdev-mirror with NBD instead. See "QMP invocation for live
> 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)
> ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>
> diff --git a/migration/fd.c b/migration/fd.c
> index 9bf9be6acb..fdeece2101 100644
> --- a/migration/fd.c
> +++ b/migration/fd.c
> @@ -24,6 +24,7 @@
> #include "qemu/sockets.h"
> #include "io/channel-util.h"
> #include "trace.h"
> +#include "qapi/error.h"
>
> static bool fd_is_pipe(int fd)
> {
> @@ -58,8 +59,9 @@ void fd_start_outgoing_migration(MigrationState *s, const char *fdname, Error **
> }
>
> 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);
> @@ -92,8 +94,9 @@ void fd_start_incoming_migration(const char *fdname, Error **errp)
> }
>
> 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;
> }
* If we are sure that an invalid 'fd' is always the file one, then
maybe (if possible) 'migrate_fd_valid' could be renamed to
'is_fd_file()'. Above snippet reads that 'fd' is invalid and the error
message says migration to file is deprecated.
Otherwise change looks okay.
Reviewed-by: Prasad Pandit <pjp@fedoraproject.org>
Thank you.
---
- Prasad
On Thu, Jan 15, 2026 at 05:45:57PM +0530, Prasad Pandit wrote:
> > @@ -92,8 +94,9 @@ void fd_start_incoming_migration(const char *fdname, Error **errp)
> > }
> >
> > 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;
> > }
>
> * If we are sure that an invalid 'fd' is always the file one, then
> maybe (if possible) 'migrate_fd_valid' could be renamed to
> 'is_fd_file()'. Above snippet reads that 'fd' is invalid and the error
> message says migration to file is deprecated.
We're not sure about it, so the current function name is IMHO more suitable
with only whitelist of socket and pipes. The error message provides a best
guess in this case.
>
> Otherwise change looks okay.
> Reviewed-by: Prasad Pandit <pjp@fedoraproject.org>
Thanks.
--
Peter Xu
On Wed, Jan 14, 2026 at 02:56:59PM -0500, Peter Xu wrote: > This feature was deprecated in 9.1. Remove it in this release (11.0). > > Signed-off-by: Peter Xu <peterx@redhat.com> This will need to go with removal of the unit test.. /migration/precopy/fd/file While I'll wait for any other comments / reviews for the other parts, I'll add that change when repost. -- Peter Xu
© 2016 - 2026 Red Hat, Inc.