migration: Convert the file backend to the new QAPI syntax
Convert the file: URI to accept a FileMigrationArgs to be compatible with the new migration QAPI. Signed-off-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231023182053.8711-9-farosas@suse.de>
This commit is contained in:
parent
cbab4face5
commit
02afba63e9
|
@ -36,20 +36,16 @@ int file_parse_offset(char *filespec, uint64_t *offsetp, Error **errp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void file_start_outgoing_migration(MigrationState *s, const char *filespec,
|
void file_start_outgoing_migration(MigrationState *s,
|
||||||
Error **errp)
|
FileMigrationArgs *file_args, Error **errp)
|
||||||
{
|
{
|
||||||
g_autofree char *filename = g_strdup(filespec);
|
|
||||||
g_autoptr(QIOChannelFile) fioc = NULL;
|
g_autoptr(QIOChannelFile) fioc = NULL;
|
||||||
uint64_t offset = 0;
|
g_autofree char *filename = g_strdup(file_args->filename);
|
||||||
|
uint64_t offset = file_args->offset;
|
||||||
QIOChannel *ioc;
|
QIOChannel *ioc;
|
||||||
|
|
||||||
trace_migration_file_outgoing(filename);
|
trace_migration_file_outgoing(filename);
|
||||||
|
|
||||||
if (file_parse_offset(filename, &offset, errp)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fioc = qio_channel_file_new_path(filename, O_CREAT | O_WRONLY | O_TRUNC,
|
fioc = qio_channel_file_new_path(filename, O_CREAT | O_WRONLY | O_TRUNC,
|
||||||
0600, errp);
|
0600, errp);
|
||||||
if (!fioc) {
|
if (!fioc) {
|
||||||
|
@ -73,19 +69,15 @@ static gboolean file_accept_incoming_migration(QIOChannel *ioc,
|
||||||
return G_SOURCE_REMOVE;
|
return G_SOURCE_REMOVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void file_start_incoming_migration(const char *filespec, Error **errp)
|
void file_start_incoming_migration(FileMigrationArgs *file_args, Error **errp)
|
||||||
{
|
{
|
||||||
g_autofree char *filename = g_strdup(filespec);
|
g_autofree char *filename = g_strdup(file_args->filename);
|
||||||
QIOChannelFile *fioc = NULL;
|
QIOChannelFile *fioc = NULL;
|
||||||
uint64_t offset = 0;
|
uint64_t offset = file_args->offset;
|
||||||
QIOChannel *ioc;
|
QIOChannel *ioc;
|
||||||
|
|
||||||
trace_migration_file_incoming(filename);
|
trace_migration_file_incoming(filename);
|
||||||
|
|
||||||
if (file_parse_offset(filename, &offset, errp)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp);
|
fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp);
|
||||||
if (!fioc) {
|
if (!fioc) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -7,9 +7,12 @@
|
||||||
|
|
||||||
#ifndef QEMU_MIGRATION_FILE_H
|
#ifndef QEMU_MIGRATION_FILE_H
|
||||||
#define QEMU_MIGRATION_FILE_H
|
#define QEMU_MIGRATION_FILE_H
|
||||||
void file_start_incoming_migration(const char *filename, Error **errp);
|
|
||||||
|
|
||||||
void file_start_outgoing_migration(MigrationState *s, const char *filename,
|
#include "qapi/qapi-types-migration.h"
|
||||||
Error **errp);
|
|
||||||
|
void file_start_incoming_migration(FileMigrationArgs *file_args, Error **errp);
|
||||||
|
|
||||||
|
void file_start_outgoing_migration(MigrationState *s,
|
||||||
|
FileMigrationArgs *file_args, Error **errp);
|
||||||
int file_parse_offset(char *filespec, uint64_t *offsetp, Error **errp);
|
int file_parse_offset(char *filespec, uint64_t *offsetp, Error **errp);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -508,7 +508,6 @@ static bool migrate_uri_parse(const char *uri,
|
||||||
|
|
||||||
static void qemu_start_incoming_migration(const char *uri, Error **errp)
|
static void qemu_start_incoming_migration(const char *uri, Error **errp)
|
||||||
{
|
{
|
||||||
const char *p = NULL;
|
|
||||||
g_autoptr(MigrationAddress) channel = NULL;
|
g_autoptr(MigrationAddress) channel = NULL;
|
||||||
MigrationIncomingState *mis = migration_incoming_get_current();
|
MigrationIncomingState *mis = migration_incoming_get_current();
|
||||||
|
|
||||||
|
@ -551,8 +550,8 @@ static void qemu_start_incoming_migration(const char *uri, Error **errp)
|
||||||
#endif
|
#endif
|
||||||
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_EXEC) {
|
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_EXEC) {
|
||||||
exec_start_incoming_migration(channel->u.exec.args, errp);
|
exec_start_incoming_migration(channel->u.exec.args, errp);
|
||||||
} else if (strstart(uri, "file:", &p)) {
|
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_FILE) {
|
||||||
file_start_incoming_migration(p, errp);
|
file_start_incoming_migration(&channel->u.file, errp);
|
||||||
} else {
|
} else {
|
||||||
error_setg(errp, "unknown migration protocol: %s", uri);
|
error_setg(errp, "unknown migration protocol: %s", uri);
|
||||||
}
|
}
|
||||||
|
@ -1900,7 +1899,6 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
|
||||||
bool resume_requested;
|
bool resume_requested;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
MigrationState *s = migrate_get_current();
|
MigrationState *s = migrate_get_current();
|
||||||
const char *p = NULL;
|
|
||||||
g_autoptr(MigrationAddress) channel = NULL;
|
g_autoptr(MigrationAddress) channel = NULL;
|
||||||
|
|
||||||
/* URI is not suitable for migration? */
|
/* URI is not suitable for migration? */
|
||||||
|
@ -1940,8 +1938,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
|
||||||
#endif
|
#endif
|
||||||
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_EXEC) {
|
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_EXEC) {
|
||||||
exec_start_outgoing_migration(s, channel->u.exec.args, &local_err);
|
exec_start_outgoing_migration(s, channel->u.exec.args, &local_err);
|
||||||
} else if (strstart(uri, "file:", &p)) {
|
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_FILE) {
|
||||||
file_start_outgoing_migration(s, p, &local_err);
|
file_start_outgoing_migration(s, &channel->u.file, &local_err);
|
||||||
} else {
|
} else {
|
||||||
error_setg(&local_err, QERR_INVALID_PARAMETER_VALUE, "uri",
|
error_setg(&local_err, QERR_INVALID_PARAMETER_VALUE, "uri",
|
||||||
"a valid migration protocol");
|
"a valid migration protocol");
|
||||||
|
|
Loading…
Reference in New Issue