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 8/9] xl: xl block-attach -N (dry run) option

To: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH 8/9] xl: xl block-attach -N (dry run) option
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Fri, 3 Jun 2011 11:30:53 +0100
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Fri, 03 Jun 2011 03:31:26 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1307037346-31251-9-git-send-email-ian.jackson@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <1307037346-31251-1-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-2-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-3-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-4-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-5-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-6-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-7-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-8-git-send-email-ian.jackson@xxxxxxxxxxxxx> <1307037346-31251-9-git-send-email-ian.jackson@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Thu, 2011-06-02 at 18:55 +0100, Ian Jackson wrote:
> This is mainly for debugging purposes at the moment.  Eventually I
> hope all commands will gain this so that -N will be a global option.
> 
> In the meantime this new option is not documented and should be
> regarded as unstable.

This is because it will ultimately move from after the command name to
before?

What about adding a dry_run flag to struct cmd_spec and handling -N at
the global scope on the basis of that flag, IOW error out on
        xl -N <command-without-dry-run>

Ian.

> 
> Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
> ---
>  tools/libxl/xl_cmdimpl.c |   34 +++++++++++++++++++++++++++++++---
>  1 files changed, 31 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
> index d2e343d..ac6d719 100644
> --- a/tools/libxl/xl_cmdimpl.c
> +++ b/tools/libxl/xl_cmdimpl.c
> @@ -4018,13 +4018,25 @@ int main_networkdetach(int argc, char **argv)
>  
>  int main_blockattach(int argc, char **argv)
>  {
> -    int opt;
> +    int opt, dry_run = 0;
>      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;
> +    while ((opt = getopt(argc, argv, "Nh")) != -1) {
> +        switch (opt) {
> +        case 'N':
> +            /* fixme this should become a global option eventually */
> +            dry_run = 1;
> +            break;
> +        case 'h':
> +            help("block-attach");
> +            return 0;
> +        default:
> +            fprintf(stderr, "option `%c' not supported.\n", optopt);
> +            break;
> +        }
> +    }
>      if ((argc-optind < 2)) {
>          help("block-attach");
>          return 2;
> @@ -4041,6 +4053,22 @@ int main_blockattach(int argc, char **argv)
>  
>      disk.backend_domid = be_domid;
>  
> +    if (dry_run) {
> +        /* fixme: this should be generated from the idl */
> +        /* fixme: enums (backend, format) should be converted to strings */
> +        printf("disk.backend_domid = %"PRIx32"\n", disk.backend_domid);
> +        printf("disk.pdev_path =     %s\n",        disk.pdev_path);
> +        printf("disk.vdev =          %s\n",        disk.vdev);
> +        printf("disk.backend =       %d\n",        disk.backend);
> +        printf("disk.format =        %d\n",        disk.format);
> +        printf("disk.script =        %s\n",        disk.script);
> +        printf("disk.removable =     %d\n",        disk.removable);
> +        printf("disk.readwrite =     %d\n",        disk.readwrite);
> +        printf("disk.is_cdrom =      %d\n",        disk.is_cdrom);
> +        if (ferror(stdout) || fflush(stdout)) { perror("stdout"); exit(-1); }
> +        return 0;
> +    }
> +
>      if (libxl_device_disk_add(ctx, fe_domid, &disk)) {
>          fprintf(stderr, "libxl_device_disk_add failed.\n");
>      }



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

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