On Tue, Sep 29, 2009 at 09:56:49AM +0100, Mark McLoughlin wrote: > Use virStorageFileGetMetadata() to find any backing stores for images > and re-label them > > Without this, qemu cannot access qcow2 backing files, see: > > https://bugzilla.redhat.com/497131 > > * src/security/security_selinux.c: re-label backing store files in > SELinuxSetSecurityImageLabel() > --- > src/security/security_selinux.c | 28 ++++++++++++++++++++++++++++ > 1 files changed, 28 insertions(+), 0 deletions(-) > > diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c > index b84de8f..670fcb2 100644 > --- a/src/security/security_selinux.c > +++ b/src/security/security_selinux.c > @@ -27,6 +27,7 @@ > #include "logging.h" > #include "pci.h" > #include "hostusb.h" > +#include "storage_file.h" > > #define VIR_FROM_THIS VIR_FROM_SECURITY > > @@ -403,10 +404,37 @@ SELinuxSetSecurityImageLabel(virConnectPtr conn, > > { > const virSecurityLabelDefPtr secdef = &vm->def->seclabel; > + const char *path; > > if (!disk->src) > return 0; > > + path = disk->src; > + do { > + virStorageFileMetadata meta; > + int ret; > + > + memset(&meta, 0, sizeof(meta)); > + > + ret = virStorageFileGetMetadata(conn, path, &meta); > + > + if (path != disk->src) > + VIR_FREE(path); > + path = NULL; > + > + if (ret < 0) > + return -1; > + > + if (meta.backingStore != NULL && > + SELinuxSetFilecon(conn, meta.backingStore, > + default_content_context) < 0) { > + VIR_FREE(meta.backingStore); > + return -1; > + } > + > + path = meta.backingStore; > + } while (path != NULL); > + > if (disk->shared) { > return SELinuxSetFilecon(conn, disk->src, default_image_context); > } else if (disk->readonly) { ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list