[libvirt] PATCH: Allow xen bus type for disks in QEMU driver
Jim Meyering
jim at meyering.net
Tue May 13 07:28:57 UTC 2008
"Daniel P. Berrange" <berrange at redhat.com> wrote:
> With the recent work to support -drive arg, the QEMU driver now supports
> many types of bus for disks attached to VMs - ide, scsi, virtio. This patches
> adds another type 'xen' for the Xen blkfront driver.
...
> diff -r f6b47c9986b9 src/util.c
> --- a/src/util.c Sat May 10 12:57:20 2008 -0400
> +++ b/src/util.c Sat May 10 12:57:46 2008 -0400
> @@ -779,23 +779,17 @@
> const char *ptr = NULL;
> int idx = 0;
>
> - if (strlen(name) < 3)
> + if (!STRPREFIX(name, "fd") &&
> + !STRPREFIX(name, "hd") &&
> + !STRPREFIX(name, "vd") &&
> + !STRPREFIX(name, "sd") &&
> + !STRPREFIX(name, "xvd"))
> return -1;
>
> - switch (*name) {
> - case 'f':
> - case 'h':
> - case 'v':
> - case 's':
> - break;
> - default:
> - return 0;
> - }
> -
> - if (*(name + 1) != 'd')
> - return -1;
> -
> - ptr = name+2;
> + if (STRPREFIX(name, "xvd"))
> + ptr = name+3;
> + else
> + ptr = name+2;
Looks fine.
The only change I'd be tempted to make would be to
iterate over the prefixes, so that the fact "xvd" is
a different length isn't handled separately:
const char *ptr = NULL;
static char const* const drive_prefix[] = {"fd", "hd", "vd", "sd", "xvd"};
unsigned int i;
for (i = 0; i < ARRAY_CARDINALITY(drive_prefix); i++)
if (STRPREFIX(name, drive_prefix[i]) {
ptr = name + strlen(drive_prefix[i]);
break;
}
if (!ptr)
return -1;
More information about the libvir-list
mailing list