[libvirt] [PATCH] virsh: Option for overriding disk type in attach-disk

Daniel Veillard veillard at redhat.com
Fri Sep 10 12:34:57 UTC 2010


On Fri, Sep 10, 2010 at 01:48:24PM +0200, Jiri Denemark wrote:
> Unless --driver tap|file option was given to attach-disk, virsh would
> generate <disk type='block'> XML which might be fine for Xen but not for
> other hypervisors. This patch introduces a new option --sourcetype which
> can be used to explicitly set the type of disk source. The option
> accepts either "file" or "block" types.
> ---
>  tools/virsh.c |   12 ++++++++++--
>  1 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 7bc33d8..57ea618 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -8116,6 +8116,7 @@ static const vshCmdOptDef opts_attach_disk[] = {
>      {"type",    VSH_OT_STRING, 0, N_("target device type")},
>      {"mode",    VSH_OT_STRING, 0, N_("mode of device reading and writing")},
>      {"persistent", VSH_OT_BOOL, 0, N_("persist disk attachment")},
> +    {"sourcetype", VSH_OT_STRING, 0, N_("type of source (block|file)")},
>      {NULL, 0, 0, NULL}
>  };
>  
> @@ -8127,6 +8128,7 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
>      int isFile = 0, ret = FALSE;
>      char *buf = NULL, *tmp = NULL;
>      unsigned int flags;
> +    char *stype;
>  
>      if (!vshConnectionUsability(ctl, ctl->conn))
>          goto cleanup;
> @@ -8144,10 +8146,16 @@ cmdAttachDisk(vshControl *ctl, const vshCmd *cmd)
>      subdriver = vshCommandOptString(cmd, "subdriver", NULL);
>      type = vshCommandOptString(cmd, "type", NULL);
>      mode = vshCommandOptString(cmd, "mode", NULL);
> +    stype = vshCommandOptString(cmd, "sourcetype", NULL);
>  
> -    if (driver) {
> -        if (STREQ(driver, "file") || STREQ(driver, "tap"))
> +    if (!stype) {
> +        if (driver && (STREQ(driver, "file") || STREQ(driver, "tap")))
>              isFile = 1;
> +    } else if (STREQ(stype, "file")) {
> +        isFile = 1;
> +    } else if (STRNEQ(stype, "block")) {
> +        vshError(ctl, _("Unknown source type: '%s'"), stype);
> +        goto cleanup;
>      }
>  
>      if (mode) {

  ACK, though not 100% of a bug fix, it's a workaround, and limited to
  virsh so I think it's fine to apply now before the release.

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list