[libvirt] [PATCHv2 13/16] storage: use cache to walk backing chain

Eric Blake eblake at redhat.com
Tue Oct 16 21:16:35 UTC 2012


On 10/16/2012 02:51 PM, Laine Stump wrote:
> On 10/13/2012 06:00 PM, Eric Blake wrote:
>> We used to walk the backing file chain at least twice per disk,
>> once to set up cgroup device whitelisting, and once to set up
>> security labeling.  Rather than walk the chain every iteration,
>> which possibly includes calls to fork() in order to open root-squashed
>> NFS files, we can exploit the cache of the previous patch.
> 
> Obviously creating the rule that you can't mess with the backing chain
> outside the libvirt API, but I think you've already said that :-)

Thankfully, since the cache is only kept for running qemu, and you can't
change the backing chain behind a running qemu's back except through
snapshot-create, block-pull, block-copy, or block-commit, all of which
are libvirt APIs that correctly update/invalidate the cache, we're set
(for now) :)

> 
> Whew! Can't see the code for all the deletions! :-)

Yep, this is one of those nice cleanups enabled by doing things right in
the first place.


>> +        if (disk->format > 0)
>> +            format = disk->format;
>> +        else if (ctl->allowDiskFormatProbing)
>> +            format = VIR_STORAGE_FILE_AUTO;
>> +        else
>> +            format = VIR_STORAGE_FILE_RAW;
> 
> It seems like I've seen this same bit of code a few times now...
> 
>> +
>> +        /* XXX - if we knew the qemu user:group here we could send it in
>> +         *        so that the open could be re-tried as that user:group.
>> +         */
>> +        disk->chain = virStorageFileGetMetadata(disk->src, format, -1, -1,
>> +                                                ctl->allowDiskFormatProbing,
>> +                                                NULL);
>> +

True - I'll experiment with a followup patch that moves the format
selection of the initial layer into virStorageFileGetMetadata; if it
works, expect another patch to be added in v3 (and if not, we'll just
live with the duplication).

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

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


More information about the libvir-list mailing list