[libvirt] [PATCH] qemu: Search for disk in qemuDomainGetBlockInfo
Eric Blake
eblake at redhat.com
Thu Sep 8 09:05:39 UTC 2011
On 09/08/2011 09:55 AM, Michal Privoznik wrote:
> The commit 89b6284fd94ce5b13ee6b002f9167f5d9074aa7a caused regression.
> Although we now allow users to input e.g. 'hda' instead of whole path,
> we still need to search for appropriate disk in VM definition.
> ---
> src/qemu/qemu_driver.c | 16 ++++++++++++++++
> 1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 1925ba5..fec4eeb 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -7755,6 +7755,7 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
> virStorageFileMetadata *meta = NULL;
> virDomainDiskDefPtr disk = NULL;
> struct stat sb;
> + int i;
> int format;
> const char *actual;
>
> @@ -7785,6 +7786,21 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
> }
> path = actual;
>
> + /* Check the path belongs to this domain. */
> + for (i = 0 ; i< vm->def->ndisks ; i++) {
> + if (vm->def->disks[i]->src != NULL&&
> + STREQ (vm->def->disks[i]->src, path)) {
> + disk = vm->def->disks[i];
> + break;
> + }
> + }
NACK. This is open-coding the effects of virDomainDiskIndexByName().
Instead, we should be doing something like:
int i = virDomainDiskIndexByName(vm->def, path, false);
if (i < 0) error;
disk = vm->def->disks[i];
instead of virDomainDiskPathByName().
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list