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

Eric Blake eblake at redhat.com
Tue Nov 9 23:42:01 UTC 2010


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 at us.ibm.com>
> Cc: Daniel P. Berrange <berrange at 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 at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20101109/0b4680e5/attachment-0001.sig>


More information about the libvir-list mailing list