[libvirt] [PATCH] Support kvm-img or qemu-img dynamically
Daniel P. Berrange
berrange at redhat.com
Wed Jun 10 10:26:55 UTC 2009
On Mon, Jun 08, 2009 at 02:33:04PM -0500, Doug Goldstein wrote:
> This patch adds a new function virFindFileInPath() and uses it to find
> where a binary lives in the PATH environment variable. Using this, we
> can dynamically find where utility functions exist (and if they even
> exists). So such we remove the build-time check for qemu-img and make it
> dynamic for kvm-img and qemu-img. Several distros uses kvm-img over
> qemu-img when installing KVM. kvm-img also includes several patches
> which Red Hat is trying to upstream with QEMU so this patch supports
> those features which are commented out in libvirt when using kvm-img
>
> @@ -1277,17 +1273,45 @@ static int createQemuImg(virConnectPtr conn,
> }
> }
>
> + if ((create_tool = virFindFileInPath("kvm-img")) != NULL)
> + use_kvmimg = 1;
> + else if ((create_tool = virFindFileInPath("qemu-img")) != NULL)
> + use_kvmimg = 0;
> + else
> + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
> + _("unable to find kvm-img or qemu-img"));
I think you missed a 'return -1' here, otherwise it'll go on to use
a NULL 'create_tool' later.
> +
> + if (inputvol) {
> + convargv[0] = create_tool;
> + imgargv = convargv;
> + } else if (vol->backingStore.path) {
> + imgargvbacking[0] = create_tool;
> + if (use_kvmimg) {
> + imgargvbacking[6] = "-F";
> + imgargvbacking[7] = backingType;
> + imgargvbacking[8] = vol->target.path;
> + imgargvbacking[9] = size;
> + }
> + imgargv = imgargvbacking;
> + } else {
> + imgargvnormal[0] = create_tool;
> + imgargv = imgargvnormal;
> + }
> +
> +
> /* Size in KB */
> snprintf(size, sizeof(size), "%llu", vol->capacity/1024);
>
> if (virRun(conn, imgargv, NULL) < 0) {
> + VIR_FREE(imgargv[0]);
> return -1;
> }
>
> + VIR_FREE(imgargv[0]);
> +
> return 0;
> }
>
Aside from that one possible bug, I think this is OK
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list