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

Re: [Xen-devel] [PATCH 6/9] xl: disks: replace block-attach disk config parser with call to xlu_parse_disk



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


 


Rackspace

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