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

Re: [Xen-devel] [PATCH 1/3] libxl: add 2 consoles to stubdoms for save/restore



On Tue, 2011-01-18 at 17:17 +0000, Stefano Stabellini wrote:
> Add two "special" PV consoles to stubdoms that are going to be used
> to send and receive the qemu-xen save files on save/restore.
> 
> Rename the save file on resume so that it doesn't collide with the name
> of the next save file.
> 
> Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> 
> 
> diff -r 59396addc940 tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c     Fri Jan 14 14:26:11 2011 +0000
> +++ b/tools/libxl/libxl.c     Tue Jan 18 17:09:56 2011 +0000
> @@ -750,7 +750,7 @@ int libxl_primary_console_exec(libxl_ctx
>  {
>      uint32_t stubdomid = libxl_get_stubdom_id(ctx, domid_vm);
>      if (stubdomid)
> -        return libxl_console_exec(ctx, stubdomid, 1, LIBXL_CONSTYPE_PV);
> +        return libxl_console_exec(ctx, stubdomid, 3, LIBXL_CONSTYPE_PV);

#define STUBDOM_CONSOLE_xxx or an enum to give a symbolic name to each
of the 3-4 console numbers.

>      else {
>          if (libxl__domain_is_hvm(ctx, domid_vm))
>              return libxl_console_exec(ctx, domid_vm, 0, 
> LIBXL_CONSTYPE_SERIAL);
> diff -r 59396addc940 tools/libxl/libxl_create.c
> --- a/tools/libxl/libxl_create.c      Fri Jan 14 14:26:11 2011 +0000
> +++ b/tools/libxl/libxl_create.c      Tue Jan 18 17:09:56 2011 +0000
> @@ -250,8 +250,12 @@ static int domain_restore(libxl_ctx *ctx
>  
>      dm_info->saved_state = NULL;
>      if (info->hvm) {
> +        char buf[100];
> +        snprintf(buf, sizeof(buf), "/var/lib/xen/qemu-save.%d", domid);
>          ret = asprintf(&dm_info->saved_state,
> -                       "/var/lib/xen/qemu-save.%d", domid);
> +                       "/var/lib/xen/qemu-restore.%d", domid);

These two strings end up in a couple of places, probably worth either a
#define or libxl__domain_dm_{save,restore}_path(...).

char buf[100] is pretty ugly too. Either use the relevant libxl_Xprintf
or a number much smaller than 100 since domid is bounded -- i.e.
strlen("/var/lib/xen/qemu-save.") + strlen("65536") (+ 1?). 32 seems to
be more than sufficient.

[...]
> +            case 1:
> +                console[i].output = libxl__sprintf(&gc, 
> "file:/var/lib/xen/qemu-save.%d", info->domid);
> +                break;
> +            case 2:
> +                if (info->saved_state)
> +                    console[i].output = libxl__sprintf(&gc, "filerw:%s", 
> info->saved_state);

These "file:" and "filerw:" prefixed things are interpreted by qemu
within the stub domain? Since you need to introduce filerw why not
instead introduce something like pvconsole:{0,1,2,3} (or /dev/consoleN
etc)?

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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