* [PATCH v5 0/2] Update error description whenever migration fails
@ 2023-06-21 13:09 Tejus GK
2023-06-21 13:09 ` [PATCH v5 1/2] migration: " Tejus GK
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Tejus GK @ 2023-06-21 13:09 UTC (permalink / raw)
To: qemu-devel
Cc: quintela, peterx, leobras, berrange, aravind.retnakaran,
shivam.kumar1, Tejus GK
Hi everyone,
This is the v5 patchset which has been rebased on the current
master. Requesting this to be queued for merge as this has already been
reviewed.
Regards,
Tejus
Tejus GK (2):
migration: Update error description whenever migration fails
migration: Refactor repeated call of yank_unregister_instance
migration/migration.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
--
2.22.3
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v5 1/2] migration: Update error description whenever migration fails
2023-06-21 13:09 [PATCH v5 0/2] Update error description whenever migration fails Tejus GK
@ 2023-06-21 13:09 ` Tejus GK
2023-06-21 13:09 ` [PATCH v5 2/2] migration: Refactor repeated call of yank_unregister_instance Tejus GK
2023-06-21 19:25 ` [PATCH v5 0/2] Update error description whenever migration fails Juan Quintela
2 siblings, 0 replies; 4+ messages in thread
From: Tejus GK @ 2023-06-21 13:09 UTC (permalink / raw)
To: qemu-devel
Cc: quintela, peterx, leobras, berrange, aravind.retnakaran,
shivam.kumar1, Tejus GK
There are places in migration.c where the migration is marked failed with
MIGRATION_STATUS_FAILED, but the failure reason is never updated. Hence
libvirt doesn't know why the migration failed when it queries for it.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Tejus GK <tejus.gk@nutanix.com>
---
migration/migration.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index dc05c6f6ea..64fab2273e 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1666,7 +1666,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
if (!(has_resume && resume)) {
yank_unregister_instance(MIGRATION_YANK_INSTANCE);
}
- error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "uri",
+ error_setg(&local_err, QERR_INVALID_PARAMETER_VALUE, "uri",
"a valid migration protocol");
migrate_set_state(&s->state, MIGRATION_STATUS_SETUP,
MIGRATION_STATUS_FAILED);
@@ -2053,7 +2053,7 @@ migration_wait_main_channel(MigrationState *ms)
* Switch from normal iteration to postcopy
* Returns non-0 on error
*/
-static int postcopy_start(MigrationState *ms)
+static int postcopy_start(MigrationState *ms, Error **errp)
{
int ret;
QIOChannelBuffer *bioc;
@@ -2163,7 +2163,7 @@ static int postcopy_start(MigrationState *ms)
*/
ret = qemu_file_get_error(ms->to_dst_file);
if (ret) {
- error_report("postcopy_start: Migration stream errored (pre package)");
+ error_setg(errp, "postcopy_start: Migration stream errored (pre package)");
goto fail_closefb;
}
@@ -2200,7 +2200,7 @@ static int postcopy_start(MigrationState *ms)
ret = qemu_file_get_error(ms->to_dst_file);
if (ret) {
- error_report("postcopy_start: Migration stream errored");
+ error_setg(errp, "postcopy_start: Migration stream errored");
migrate_set_state(&ms->state, MIGRATION_STATUS_POSTCOPY_ACTIVE,
MIGRATION_STATUS_FAILED);
}
@@ -2707,6 +2707,7 @@ typedef enum {
static MigIterateState migration_iteration_run(MigrationState *s)
{
uint64_t must_precopy, can_postcopy;
+ Error *local_err = NULL;
bool in_postcopy = s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE;
qemu_savevm_state_pending_estimate(&must_precopy, &can_postcopy);
@@ -2729,8 +2730,9 @@ static MigIterateState migration_iteration_run(MigrationState *s)
/* Still a significant amount to transfer */
if (!in_postcopy && must_precopy <= s->threshold_size &&
qatomic_read(&s->start_postcopy)) {
- if (postcopy_start(s)) {
- error_report("%s: postcopy failed to start", __func__);
+ if (postcopy_start(s, &local_err)) {
+ migrate_set_error(s, local_err);
+ error_report_err(local_err);
}
return MIG_ITERATE_SKIP;
}
@@ -3221,8 +3223,10 @@ void migrate_fd_connect(MigrationState *s, Error *error_in)
*/
if (migrate_postcopy_ram() || migrate_return_path()) {
if (open_return_path_on_source(s, !resume)) {
- error_report("Unable to open return-path for postcopy");
+ error_setg(&local_err, "Unable to open return-path for postcopy");
migrate_set_state(&s->state, s->state, MIGRATION_STATUS_FAILED);
+ migrate_set_error(s, local_err);
+ error_report_err(local_err);
migrate_fd_cleanup(s);
return;
}
@@ -3246,6 +3250,7 @@ void migrate_fd_connect(MigrationState *s, Error *error_in)
}
if (multifd_save_setup(&local_err) != 0) {
+ migrate_set_error(s, local_err);
error_report_err(local_err);
migrate_set_state(&s->state, MIGRATION_STATUS_SETUP,
MIGRATION_STATUS_FAILED);
--
2.22.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v5 2/2] migration: Refactor repeated call of yank_unregister_instance
2023-06-21 13:09 [PATCH v5 0/2] Update error description whenever migration fails Tejus GK
2023-06-21 13:09 ` [PATCH v5 1/2] migration: " Tejus GK
@ 2023-06-21 13:09 ` Tejus GK
2023-06-21 19:25 ` [PATCH v5 0/2] Update error description whenever migration fails Juan Quintela
2 siblings, 0 replies; 4+ messages in thread
From: Tejus GK @ 2023-06-21 13:09 UTC (permalink / raw)
To: qemu-devel
Cc: quintela, peterx, leobras, berrange, aravind.retnakaran,
shivam.kumar1, Tejus GK
In the function qmp_migrate(), yank_unregister_instance() gets called
twice which isn't required. Hence, refactoring it so that it gets called
during the local_error cleanup.
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Tejus GK <tejus.gk@nutanix.com>
---
migration/migration.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/migration/migration.c b/migration/migration.c
index 64fab2273e..a9186d78ca 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1663,15 +1663,11 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
} else if (strstart(uri, "fd:", &p)) {
fd_start_outgoing_migration(s, p, &local_err);
} else {
- if (!(has_resume && resume)) {
- yank_unregister_instance(MIGRATION_YANK_INSTANCE);
- }
error_setg(&local_err, QERR_INVALID_PARAMETER_VALUE, "uri",
"a valid migration protocol");
migrate_set_state(&s->state, MIGRATION_STATUS_SETUP,
MIGRATION_STATUS_FAILED);
block_cleanup_parameters();
- return;
}
if (local_err) {
--
2.22.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v5 0/2] Update error description whenever migration fails
2023-06-21 13:09 [PATCH v5 0/2] Update error description whenever migration fails Tejus GK
2023-06-21 13:09 ` [PATCH v5 1/2] migration: " Tejus GK
2023-06-21 13:09 ` [PATCH v5 2/2] migration: Refactor repeated call of yank_unregister_instance Tejus GK
@ 2023-06-21 19:25 ` Juan Quintela
2 siblings, 0 replies; 4+ messages in thread
From: Juan Quintela @ 2023-06-21 19:25 UTC (permalink / raw)
To: Tejus GK
Cc: qemu-devel, peterx, leobras, berrange, aravind.retnakaran,
shivam.kumar1
Tejus GK <tejus.gk@nutanix.com> wrote:
> Hi everyone,
>
> This is the v5 patchset which has been rebased on the current
> master. Requesting this to be queued for merge as this has already been
> reviewed.
queued.
thanks.
>
> Regards,
> Tejus
>
> Tejus GK (2):
> migration: Update error description whenever migration fails
> migration: Refactor repeated call of yank_unregister_instance
>
> migration/migration.c | 23 ++++++++++++-----------
> 1 file changed, 12 insertions(+), 11 deletions(-)
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-06-21 19:26 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-21 13:09 [PATCH v5 0/2] Update error description whenever migration fails Tejus GK
2023-06-21 13:09 ` [PATCH v5 1/2] migration: " Tejus GK
2023-06-21 13:09 ` [PATCH v5 2/2] migration: Refactor repeated call of yank_unregister_instance Tejus GK
2023-06-21 19:25 ` [PATCH v5 0/2] Update error description whenever migration fails Juan Quintela
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).