[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] xl: support for leaving domain paused after save
commit 4d1759b5153ce5b0903e56fefcfdca8a03b7c246 Author: Ian Murray <murrayie@xxxxxxxxxxx> AuthorDate: Thu Jul 4 00:58:27 2013 +0100 Commit: Ian Campbell <ian.campbell@xxxxxxxxxx> CommitDate: Wed Jul 17 10:39:22 2013 +0100 xl: support for leaving domain paused after save New feature to allow xl save to leave a domain paused after its memory has been saved. This is to allow disk snapshots of domU to be taken that exactly correspond to the memory state at save time. Once the snapshot(s) have been taken or whatever, the domain can be unpaused in the usual manner. Usage: xl save -p <domid> <filespec> Signed-off-by: Ian Murray <murrayie@xxxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- docs/man/xl.pod.1 | 6 +++++- tools/libxl/xl_cmdimpl.c | 20 ++++++++++++++------ tools/libxl/xl_cmdtable.c | 3 ++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 index 64a118e..5975d7b 100644 --- a/docs/man/xl.pod.1 +++ b/docs/man/xl.pod.1 @@ -504,7 +504,7 @@ Pass VNC password to vncviewer via stdin. Saves a running domain to a state file so that it can be restored later. Once saved, the domain will no longer be running on the -system, unless the -c option is used. +system, unless the -c or -p options are used. B<xl restore> restores from this checkpoint file. Passing a config file argument allows the user to manually select the VM config file used to create the domain. @@ -515,6 +515,10 @@ file used to create the domain. Leave domain running after creating the snapshot. +=item B<-p> + +Leave domain paused after creating the snapshot. + =back =item B<sharing> [I<domain-id>] diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index d365f90..4a8feaf 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -3266,7 +3266,7 @@ static void save_domain_core_writeconfig(int fd, const char *source, } static int save_domain(uint32_t domid, const char *filename, int checkpoint, - const char *override_config_file) + int leavepaused, const char *override_config_file) { int fd; uint8_t *config_data; @@ -3290,11 +3290,15 @@ static int save_domain(uint32_t domid, const char *filename, int checkpoint, int rc = libxl_domain_suspend(ctx, domid, fd, 0, NULL); close(fd); - if (rc < 0) + if (rc < 0) { fprintf(stderr, "Failed to save domain, resuming domain\n"); - - if (checkpoint || rc < 0) libxl_domain_resume(ctx, domid, 1, 0); + } + else if (leavepaused || checkpoint) { + if (leavepaused) + libxl_domain_pause(ctx, domid); + libxl_domain_resume(ctx, domid, 1, 0); + } else libxl_domain_destroy(ctx, domid, 0); @@ -3838,12 +3842,16 @@ int main_save(int argc, char **argv) const char *filename; const char *config_filename = NULL; int checkpoint = 0; + int leavepaused = 0; int opt; - SWITCH_FOREACH_OPT(opt, "c", NULL, "save", 2) { + SWITCH_FOREACH_OPT(opt, "cp", NULL, "save", 2) { case 'c': checkpoint = 1; break; + case 'p': + leavepaused = 1; + break; } if (argc-optind > 3) { @@ -3856,7 +3864,7 @@ int main_save(int argc, char **argv) if ( argc - optind >= 3 ) config_filename = argv[optind + 2]; - save_domain(domid, filename, checkpoint, config_filename); + save_domain(domid, filename, checkpoint, leavepaused, config_filename); return 0; } diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c index 44b42b0..326a660 100644 --- a/tools/libxl/xl_cmdtable.c +++ b/tools/libxl/xl_cmdtable.c @@ -142,7 +142,8 @@ struct cmd_spec cmd_table[] = { "Save a domain state to restore later", "[options] <Domain> <CheckpointFile> [<ConfigFile>]", "-h Print this help.\n" - "-c Leave domain running after creating the snapshot." + "-c Leave domain running after creating the snapshot.\n" + "-p Leave domain paused after creating the snapshot." }, { "migrate", &main_migrate, 0, 1, -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |