qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] migration: re-active images when migration fails to complete
@ 2016-11-19 11:43 zhanghailiang
  2016-11-21 11:12 ` Hailiang Zhang
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: zhanghailiang @ 2016-11-19 11:43 UTC (permalink / raw)
  To: quintela, amit.shah; +Cc: qemu-devel, zhanghailiang

commit fe904ea8242cbae2d7e69c052c754b8f5f1ba1d6 fixed a case
which migration aborted QEMU because it didn't regain the control
of images while some errors happened.

Actually, we have another case in that error path to abort QEMU
because of the same reason:
    migration_thread()
        migration_completion()
           bdrv_inactivate_all() ----------------> inactivate images
           qemu_savevm_state_complete_precopy()
               socket_writev_buffer() --------> error because destination fails
             qemu_fflush() -------------------> set error on migration stream
           qemu_mutex_unlock_iothread() ------> unlock
    qmp_migrate_cancel() ---------------------> user cancelled migration
        migrate_set_state() ------------------> set migrate CANCELLING
    migration_completion() -----------------> go on to fail_invalidate
        if (s->state == MIGRATION_STATUS_ACTIVE) -> Jump this branch
    migration_thread() -----------------------> break migration loop
      vm_start() -----------------------------> restart guest with inactive
                                                images
We failed to regain the control of images because we only regain it
while the migration state is "active", but here users cancelled the migration
when they found some errors happened (for example, libvirtd daemon is shutdown
in destination unexpectedly).

Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
---
 migration/migration.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/migration/migration.c b/migration/migration.c
index f498ab8..0c1ee6d 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1752,7 +1752,8 @@ fail_invalidate:
     /* If not doing postcopy, vm_start() will be called: let's regain
      * control on images.
      */
-    if (s->state == MIGRATION_STATUS_ACTIVE) {
+    if (s->state == MIGRATION_STATUS_ACTIVE ||
+        s->state == MIGRATION_STATUS_CANCELLING) {
         Error *local_err = NULL;
 
         bdrv_invalidate_cache_all(&local_err);
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-01-11  5:23 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-19 11:43 [Qemu-devel] [PATCH] migration: re-active images when migration fails to complete zhanghailiang
2016-11-21 11:12 ` Hailiang Zhang
2016-12-01 14:30 ` Kevin Wolf
2016-12-06 13:42 ` Kevin Wolf
2016-12-06 14:30   ` [Qemu-devel] [Qemu-block] " Stefan Hajnoczi
2016-12-06 15:24   ` [Qemu-devel] " Dr. David Alan Gilbert
2016-12-08  5:35     ` Hailiang Zhang
2016-12-08 20:02       ` Dr. David Alan Gilbert
2016-12-22  2:56         ` Hailiang Zhang
2016-12-27 10:38           ` Hailiang Zhang
2017-01-11  5:22           ` Hailiang Zhang

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).