qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).