[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] fix Remus failover regression





On 07/28/2014 12:05 PM, Wen Congyang wrote:
At 07/28/2014 11:35 AM, Yang Hongyang Write:
commit: c2ba706c
tools/libxc: goto correct label on error paths by Andrew broke
Remus in Xen 4.4 or earlier versions that has this commit backported.

With Remus, this jump essentially discards the last incomplete
checkpoint received by the backup.
This is required for Remus to work and this does not break live
migration.

CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
CC: Ian Campbell <ian.campbell@xxxxxxxxxx>
CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CC: Shriram Rajagopalan <rshriram@xxxxxxxxx>
Signed-off-by: Yang Hongyang <yanghy@xxxxxxxxxxxxxx>
---
  tools/libxc/xc_domain_restore.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/libxc/xc_domain_restore.c b/tools/libxc/xc_domain_restore.c
index e73e0a2..5d2fbd6 100644
--- a/tools/libxc/xc_domain_restore.c
+++ b/tools/libxc/xc_domain_restore.c
@@ -1783,14 +1783,14 @@ int xc_domain_restore(xc_interface *xch, int io_fd, 
uint32_t dom,

      if ( pagebuf_get(xch, ctx, &pagebuf, io_fd, dom) ) {
          PERROR("error when buffering batch, finishing");
-        goto out;
+        goto finish;
      }
      memset(&tmptail, 0, sizeof(tmptail));
      tmptail.ishvm = hvm;
      if ( buffer_tail(xch, ctx, &tmptail, io_fd, max_vcpu_id, vcpumap,
                       ext_vcpucontext, vcpuextstate_size) < 0 ) {
          ERROR ("error buffering image tail, finishing");
-        goto out;
+        goto finish;
      }
      tailbuf_free(&tailbuf);
      memcpy(&tailbuf, &tmptail, sizeof(tailbuf));


The mail is here:
http://lists.xenproject.org/archives/html/xen-devel/2014-01/msg02299.html

Both of these errors have been discovered by xc_domain_restore() returning
success after suffering a fatal error during migration, leading to the
toolstack believing that the VM migrated successfully.

These codes are only for Remus. So, why these codes are executed by migration?

I was confused also, without Remus, these two error path will not be hitted I
think, without Remus, migration will ended at:
1776     if ( ctx->last_checkpoint )
1777     {
1778         // DPRINTF("Last checkpoint, finishing\n");
1779         goto finish;
1780     }


Thanks
Wen Congyang


.


--
Thanks,
Yang.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.