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

Re: [Xen-devel] [PATCH] [Attempt 2] xl save but leave domain paused



On Thu, 2013-07-04 at 00:58 +0100, Ian Murray wrote:
>     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>
> 
>     Somewhat fixed alignment.
>     Re-worked the if statements so they read better - no change to logic.
>     Removed spurious empty line.
>     Fixed Man page.
> 
>     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 8a478ba..0e2b0b6 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,



_______________________________________________
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®.