]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/xen.git/commitdiff
remus: don't do failover if we don't have a consistent state
authorWen Congyang <wency@cn.fujitsu.com>
Tue, 19 Jan 2016 07:17:37 +0000 (15:17 +0800)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 20 Jan 2016 17:08:36 +0000 (17:08 +0000)
We will have a consistent state when a CHECKPOINT_END record
is received. After the first CHECKPOINT_END record is received,
we will buffer all records until the next CHECKPOINT_END record
is received. So if the checkpoint() callback returns XGR_CHECKPOINT_FAILOVER,
we only can do failover if ctx->restore.buffer_all_records is
true.

Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
tools/libxc/xc_sr_restore.c

index 05159bb96588c524ae0a00d1b52c83ec757fd8be..6ccdab9b33ced477bc35303091f87355e6146992 100644 (file)
@@ -493,7 +493,11 @@ static int handle_checkpoint(struct xc_sr_context *ctx)
         break;
 
     case XGR_CHECKPOINT_FAILOVER:
-        rc = BROKEN_CHANNEL;
+        if ( ctx->restore.buffer_all_records )
+            rc = BROKEN_CHANNEL;
+        else
+            /* We don't have a consistent state */
+            rc = -1;
         goto err;
 
     default: /* Other fatal error */