[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [PATCH] Allow non-file disk backingStores

On 11/03/2010 09:50 AM, Adam Litke wrote:
> I am trying to use a qcow image with libvirt where the backing 'file' is a
> qemu-nbd server.  Unfortunately virDomainDiskDefForeachPath() assumes that
> backingStore is always a real file so something like 'nbd:0:3333' is rejected
> because a file with that name cannot be accessed.  Note that I am not worried
> about directly using nbd images.  That would require a new disk type with XML
> markup, etc.  I only want it to be permitted as a backingStore
> The following patch implements danpb's suggestion:
>> I think I'm inclined to push the logic for skipping NBD one stage higher.
>> I'd rather expect virStorageFileGetMetadata() to return all backing
>> stores, even if not files. The virDomainDiskDefForeachPath() method
>> should definitely ignore non-file backing stores though.
>> So what I'm thinking is to extend the virStorageFileMetadata struct and
>> just add a 'bool isFile' field to it. Default this field to true, unless
>> you see the prefix of nbd: in which case set it to false. The
>> virDomainDiskDefForeachPath() method can then skip over any backing
>> store with isFile == false
> Signed-off-by: Adam Litke <agl us ibm com>
> Cc: Daniel P. Berrange <berrange redhat com>
> ---
>  src/conf/domain_conf.c  |    7 +++++++
>  src/util/storage_file.c |   16 +++++++++++++++-
>  src/util/storage_file.h |    1 +
>  3 files changed, 23 insertions(+), 1 deletions(-)

ACK, and I've pushed this after adjusting one nit.

> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index fe93711..2d11785 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -7813,6 +7813,13 @@ int virDomainDiskDefForeachPath(virDomainDiskDefPtr disk,
>          depth++;
>          nextpath = meta.backingStore;
> +        /* Stop iterating if we reach a non-file backing store */
> +        if (nextpath && meta.backingStoreIsFile == false) {

When I know a variable is bool, then I prefer using 'var' or '!var'
rather than the more verbose 'var == true' or 'var == false'.

Eric Blake   eblake redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]