This is a counterpart to the 'file:' uri support for source migration, now a file can also serve as the source of an incoming migration.
Signed-off-by: Nikolay Borisov <nbori...@suse.com> --- migration/file.c | 15 +++++++++++++++ migration/file.h | 1 + migration/migration.c | 2 ++ 3 files changed, 18 insertions(+) diff --git a/migration/file.c b/migration/file.c index 02896a7cab99..93eb718aa0f4 100644 --- a/migration/file.c +++ b/migration/file.c @@ -21,3 +21,18 @@ void file_start_outgoing_migration(MigrationState *s, const char *fname, Error * } +void file_start_incoming_migration(const char *fname, Error **errp) +{ + QIOChannelFile *ioc; + + ioc = qio_channel_file_new_path(fname, O_RDONLY, 0, errp); + if (!ioc) { + error_report("Error creating a channel"); + return; + } + + qio_channel_set_name(QIO_CHANNEL(ioc), "migration-file-incoming"); + migration_channel_process_incoming(QIO_CHANNEL(ioc)); + object_unref(OBJECT(ioc)); +} + diff --git a/migration/file.h b/migration/file.h index d476eb1157f9..cdbd291322d4 100644 --- a/migration/file.h +++ b/migration/file.h @@ -5,5 +5,6 @@ void file_start_outgoing_migration(MigrationState *s, const char *filename, Error **errp); +void file_start_incoming_migration(const char *fname, Error **errp); #endif diff --git a/migration/migration.c b/migration/migration.c index 8813b78b9a6b..140b0f1a54bd 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -506,6 +506,8 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp) exec_start_incoming_migration(p, errp); } else if (strstart(uri, "fd:", &p)) { fd_start_incoming_migration(p, errp); + } else if (strstart(uri, "file:", &p)) { + file_start_incoming_migration(p, errp); } else { error_setg(errp, "unknown migration protocol: %s", uri); } -- 2.34.1