On 09/17/2011 08:51 AM, Daniel Veillard wrote:
On Sat, Sep 17, 2011 at 06:22:09AM -0600, Eric Blake wrote:
> For all types of disks other than qcow2, we were requesting that
> SELinux labeling visit the new file as if it were qcow2, which
> means labeling would try to find the backing files of an empty file.
> And for a pre-existing qcow2 disk, we were passing NULL, which meant
> that labelling tried to probe the file type (and if probing is
> disabled, per the default qemu.conf, this made snapshots fail).
> What we really want is to make SELinux labeling visit the new
> file as raw; it will later be converted to qcow2 if qemu successfully
> made the snapshot.
>
> * src/qemu/qemu_driver.c
> (qemuDomainSnapshotCreateSingleDiskActive): Force SELinux labeling
> to avoid probe of new file.
> ---
>
> Fixes
https://bugzilla.redhat.com/show_bug.cgi?id=738676
>
> I wonder why we are passing disk types as strings, instead of encoding
> them as an enum. Use of an enum would avoid my ugly hack of having to
> cast away const of my temporary assignment of a string.
The only advantage I would see is better error handling when hitting
a value not known by the current libvirtd, the string allows to report
what is missing, but it's really a corner case.
I'll probably try cleaning that up, post 0.9.5.
> - disk->driverType = driverType;
> + disk->driverType = (char *) "raw"; /* Don't want to probe
backing files */
>
> if (virDomainLockDiskAttach(driver->lockManager, vm, disk)< 0)
> goto cleanup;
ACK,
Pushed.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org