[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC Patch v3 09/22] xc_domain_save: flush cache before calling callbacks->postcopy() in colo mode
In colo mode, secondary vm is running. We will use the io_fd to ensure that both primary vm and secondary vm are resumed at the same time. So we should call postcopy later. Signed-off-by: Wen Congyang <wency@xxxxxxxxxxxxxx> --- tools/libxc/xc_domain_save.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c index 254fdb3..61caa47 100644 --- a/tools/libxc/xc_domain_save.c +++ b/tools/libxc/xc_domain_save.c @@ -2078,10 +2078,15 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter out_rc: completed = 1; - if ( !rc && callbacks->postcopy ) + /* + * COLO: secondary vm is running. We will use the io_fd to + * ensure that both primary vm and secondary vm are resumed + * at the same time. So we should call postcopy later. + */ + if ( !rc && callbacks->postcopy && !callbacks->get_dirty_pfn ) callbacks->postcopy(callbacks->data); - /* guest has been resumed. Now we can compress data + /* Remus: guest has been resumed. Now we can compress data * at our own pace. */ if (!rc && compressing) @@ -2109,6 +2114,13 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter discard_file_cache(xch, io_fd, 1 /* flush */); + /* + * COLO: send qemu device state and resume both + * primary vm and secondary vm now. + */ + if ( !rc && callbacks->postcopy && callbacks->get_dirty_pfn ) + callbacks->postcopy(callbacks->data); + /* Enable compression now, finally */ compressing = (flags & XCFLAGS_CHECKPOINT_COMPRESS); -- 1.9.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |