[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v14 08/14] migration: Convert the file backend the new QAPI synta
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH v14 08/14] migration: Convert the file backend the new QAPI syntax |
|
Date: |
Thu, 19 Oct 2023 16:23:47 -0300 |
Convert the file: URI to accept a FileMigrationArgs to be compatible
with the new migration QAPI.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/file.c | 22 +++++++---------------
migration/file.h | 9 ++++++---
migration/migration.c | 10 ++++------
3 files changed, 17 insertions(+), 24 deletions(-)
diff --git a/migration/file.c b/migration/file.c
index ec069ef329..b36abc050e 100644
--- a/migration/file.c
+++ b/migration/file.c
@@ -36,20 +36,16 @@ int file_parse_offset(char *filespec, uint64_t *offsetp,
Error **errp)
return 0;
}
-void file_start_outgoing_migration(MigrationState *s, const char *filespec,
- Error **errp)
+void file_start_outgoing_migration(MigrationState *s,
+ FileMigrationArgs *file_args, Error **errp)
{
- g_autofree char *filename = g_strdup(filespec);
g_autoptr(QIOChannelFile) fioc = NULL;
- uint64_t offset = 0;
+ g_autofree char *filename = g_strdup(file_args->path);
+ uint64_t offset = file_args->offset;
QIOChannel *ioc;
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,
0600, errp);
if (!fioc) {
@@ -73,19 +69,15 @@ static gboolean file_accept_incoming_migration(QIOChannel
*ioc,
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->path);
QIOChannelFile *fioc = NULL;
- uint64_t offset = 0;
+ uint64_t offset = file_args->offset;
QIOChannel *ioc;
trace_migration_file_incoming(filename);
- if (file_parse_offset(filename, &offset, errp)) {
- return;
- }
-
fioc = qio_channel_file_new_path(filename, O_RDONLY, 0, errp);
if (!fioc) {
return;
diff --git a/migration/file.h b/migration/file.h
index 3888a57105..37d6a08bfc 100644
--- a/migration/file.h
+++ b/migration/file.h
@@ -7,9 +7,12 @@
#ifndef 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,
- Error **errp);
+#include "qapi/qapi-types-migration.h"
+
+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);
#endif
diff --git a/migration/migration.c b/migration/migration.c
index 0f16910156..9531aec8d3 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -482,7 +482,6 @@ static bool migrate_uri_parse(const char *uri,
static void qemu_start_incoming_migration(const char *uri, Error **errp)
{
- const char *p = NULL;
g_autoptr(MigrationAddress) channel = NULL;
MigrationIncomingState *mis = migration_incoming_get_current();
@@ -513,8 +512,8 @@ static void qemu_start_incoming_migration(const char *uri,
Error **errp)
#endif
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_EXEC) {
exec_start_incoming_migration(channel->u.exec.args, errp);
- } else if (strstart(uri, "file:", &p)) {
- file_start_incoming_migration(p, errp);
+ } else if (channel->transport == MIGRATION_ADDRESS_TYPE_FILE) {
+ file_start_incoming_migration(&channel->u.file, errp);
} else {
error_setg(errp, "unknown migration protocol: %s", uri);
}
@@ -1747,7 +1746,6 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
bool resume_requested;
Error *local_err = NULL;
MigrationState *s = migrate_get_current();
- const char *p = NULL;
g_autoptr(MigrationAddress) channel = NULL;
/* URI is not suitable for migration? */
@@ -1787,8 +1785,8 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
#endif
} else if (channel->transport == MIGRATION_ADDRESS_TYPE_EXEC) {
exec_start_outgoing_migration(s, channel->u.exec.args, &local_err);
- } else if (strstart(uri, "file:", &p)) {
- file_start_outgoing_migration(s, p, &local_err);
+ } else if (channel->transport == MIGRATION_ADDRESS_TYPE_FILE) {
+ file_start_outgoing_migration(s, &channel->u.file, &local_err);
} else {
error_setg(&local_err, QERR_INVALID_PARAMETER_VALUE, "uri",
"a valid migration protocol");
--
2.35.3
- Re: [PATCH v14 02/14] fixup! migration: New QAPI type 'MigrateAddress', (continued)
Re: [PATCH v14 02/14] fixup! migration: New QAPI type 'MigrateAddress', Daniel P . Berrangé, 2023/10/23
[PATCH v14 03/14] migration: convert migration 'uri' into 'MigrateAddress', Fabiano Rosas, 2023/10/19
[PATCH v14 04/14] fixup! migration: convert migration 'uri' into 'MigrateAddress', Fabiano Rosas, 2023/10/19
[PATCH v14 05/14] migration: convert socket backend to accept MigrateAddress, Fabiano Rosas, 2023/10/19
[PATCH v14 06/14] migration: convert rdma backend to accept MigrateAddress, Fabiano Rosas, 2023/10/19
[PATCH v14 07/14] migration: convert exec backend to accept MigrateAddress., Fabiano Rosas, 2023/10/19
[PATCH v14 08/14] migration: Convert the file backend the new QAPI syntax,
Fabiano Rosas <=
[PATCH v14 09/14] migration: New migrate and migrate-incoming argument 'channels', Fabiano Rosas, 2023/10/19
[PATCH v14 10/14] fixup! migration: New migrate and migrate-incoming argument 'channels', Fabiano Rosas, 2023/10/19
[PATCH v14 11/14] migration: modify migration_channels_and_uri_compatible() for new QAPI syntax, Fabiano Rosas, 2023/10/19
[PATCH v14 12/14] migration: Implement MigrateChannelList to qmp migration flow., Fabiano Rosas, 2023/10/19
[PATCH v14 13/14] migration: Implement MigrateChannelList to hmp migration flow., Fabiano Rosas, 2023/10/19
[PATCH v14 14/14] migration: modify test_multifd_tcp_none() to use new QAPI syntax., Fabiano Rosas, 2023/10/19