[libvirt] [PATCH] snapshot: allow disk snapshots of qcow2 disks
veillard at redhat.com
Sat Sep 17 14:51:29 UTC 2011
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.
> src/qemu/qemu_driver.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 2a1e5ea..e2f428f 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -9151,7 +9151,7 @@ qemuDomainSnapshotCreateSingleDiskActive(struct qemud_driver *driver,
> origsrc = disk->src;
> disk->src = source;
> origdriver = disk->driverType;
> - disk->driverType = driverType;
> + disk->driverType = (char *) "raw"; /* Don't want to probe backing files */
> if (virDomainLockDiskAttach(driver->lockManager, vm, disk) < 0)
> goto cleanup;
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list