WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH 6/9] xl: disks: replace block-attach disk config

On Thu, 2011-06-02 at 18:55 +0100, Ian Jackson wrote:
> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

> ---
>  tools/libxl/xl_cmdimpl.c  |   50 ++++++--------------------------------------
>  tools/libxl/xl_cmdtable.c |    2 +-
>  2 files changed, 8 insertions(+), 44 deletions(-)
> 
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index 63ac79a..d2e343d 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -4019,62 +4019,26 @@ int main_networkdetach(int argc, char **argv)
>  int main_blockattach(int argc, char **argv)
>  {
>      int opt;
> -    const char *tok;
>      uint32_t fe_domid, be_domid = 0;
>      libxl_device_disk disk = { 0 };
> +    XLU_Config *config = 0;
>  
>      if ((opt = def_getopt(argc, argv, "", "block-attach", 2)) != -1)
>          return opt;
> -    if (argc-optind > 5) {
> +    if ((argc-optind < 2)) {
>          help("block-attach");
>          return 2;
>      }
>  
> -    tok = strtok(argv[optind+1], ":");
> -    if (!strcmp(tok, "phy")) {
> -        disk.backend = LIBXL_DISK_BACKEND_PHY;
> -    } else if (!strcmp(tok, "file")) {
> -        disk.backend = LIBXL_DISK_BACKEND_TAP;
> -    } else if (!strcmp(tok, "tap")) {
> -        tok = strtok(NULL, ":");
> -        if (!strcmp(tok, "aio")) {
> -            disk.backend = LIBXL_DISK_BACKEND_TAP;
> -        } else if (!strcmp(tok, "vhd")) {
> -            disk.format = LIBXL_DISK_FORMAT_VHD;
> -            disk.backend = LIBXL_DISK_BACKEND_TAP;
> -        } else if (!strcmp(tok, "qcow")) {
> -            disk.format = LIBXL_DISK_FORMAT_QCOW;
> -            disk.backend = LIBXL_DISK_BACKEND_QDISK;
> -        } else if (!strcmp(tok, "qcow2")) {
> -            disk.format = LIBXL_DISK_FORMAT_QCOW2;
> -            disk.backend = LIBXL_DISK_BACKEND_QDISK;
> -        } else {
> -            fprintf(stderr, "Error: `%s' is not a valid disk image.\n", tok);
> -            return 1;
> -        }
> -    } else {
> -        fprintf(stderr, "Error: `%s' is not a valid block device.\n", tok);
> -        return 1;
> -    }
> -    disk.pdev_path = strtok(NULL, "\0");
> -    if (!disk.pdev_path) {
> -        fprintf(stderr, "Error: missing path to disk image.\n");
> -        return 1;
> -    }
> -    disk.vdev = argv[optind+2];
> -    disk.removable = 1;
> -    disk.readwrite = ((argc-optind <= 3) || (argv[optind+3][0] == 'w'));
> -
>      if (domain_qualifier_to_domid(argv[optind], &fe_domid, 0) < 0) {
>          fprintf(stderr, "%s is an invalid domain identifier\n", 
> argv[optind]);
>          return 1;
>      }
> -    if (argc-optind == 5) {
> -        if (domain_qualifier_to_domid(argv[optind+4], &be_domid, 0) < 0) {
> -            fprintf(stderr, "%s is an invalid domain identifier\n", 
> argv[optind+4]);
> -            return 1;
> -        }
> -    }
> +    optind++;
> +
> +    parse_disk_config_multistring
> +        (&config, argc-optind, (const char* const*)argv + optind, &disk);
> +
>      disk.backend_domid = be_domid;
>  
>      if (libxl_device_disk_add(ctx, fe_domid, &disk)) {
> diff --git a/tools/libxl/xl_cmdtable.c b/tools/libxl/xl_cmdtable.c
> index 044c24d..a899803 100644
> --- a/tools/libxl/xl_cmdtable.c
> +++ b/tools/libxl/xl_cmdtable.c
> @@ -257,7 +257,7 @@ struct cmd_spec cmd_table[] = {
>      { "block-attach",
>        &main_blockattach,
>        "Create a new virtual block device",
> -      "<Domain> <BackDev> <FrontDev> [<Mode>] [BackDomain]",
> +      "<Domain> <disk-spec-component(s)>...",
>      },
>      { "block-list",
>        &main_blocklist,



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

<Prev in Thread] Current Thread [Next in Thread>