The image labels are stored in the virStorageSource struct. Convert the
virDomainDiskDefGetSecurityLabelDef helper not to use the full disk def
and move it appropriately.
---
src/conf/domain_conf.c | 14 --------------
src/conf/domain_conf.h | 3 ---
src/libvirt_private.syms | 2 +-
src/qemu/qemu_domain.c | 2 +-
src/security/security_dac.c | 4 ++--
src/security/security_selinux.c | 4 ++--
src/util/virstoragefile.c | 15 +++++++++++++++
src/util/virstoragefile.h | 4 ++++
8 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 4114289..02c394f 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -19489,20 +19489,6 @@ virDomainDefGetSecurityLabelDef(virDomainDefPtr def, const char
*model)
return seclabel;
}
-virSecurityDeviceLabelDefPtr
-virDomainDiskDefGetSecurityLabelDef(virDomainDiskDefPtr def, const char *model)
-{
- size_t i;
-
- if (def == NULL)
- return NULL;
-
- for (i = 0; i < def->src->nseclabels; i++) {
- if (STREQ_NULLABLE(def->src->seclabels[i]->model, model))
- return def->src->seclabels[i];
- }
- return NULL;
-}
virSecurityDeviceLabelDefPtr
virDomainChrDefGetSecurityLabelDef(virDomainChrDefPtr def, const char *model)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index a6ac95a..6779a41 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -2519,9 +2519,6 @@ virSecurityLabelDefPtr
virDomainDefGetSecurityLabelDef(virDomainDefPtr def, const char *model);
virSecurityDeviceLabelDefPtr
-virDomainDiskDefGetSecurityLabelDef(virDomainDiskDefPtr def, const char *model);
-
-virSecurityDeviceLabelDefPtr
virDomainChrDefGetSecurityLabelDef(virDomainChrDefPtr def, const char *model);
typedef const char* (*virEventActionToStringFunc)(int type);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 1c84777..4f075e5 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -210,7 +210,6 @@ virDomainDiskCopyOnReadTypeToString;
virDomainDiskDefAssignAddress;
virDomainDiskDefForeachPath;
virDomainDiskDefFree;
-virDomainDiskDefGetSecurityLabelDef;
virDomainDiskDefNew;
virDomainDiskDeviceTypeToString;
virDomainDiskDiscardTypeToString;
@@ -1902,6 +1901,7 @@ virStorageSourceCopy;
virStorageSourceCopySeclabels;
virStorageSourceFree;
virStorageSourceGetActualType;
+virStorageSourceGetSecurityLabelDef;
virStorageSourceNewFromBacking;
virStorageSourcePoolDefFree;
virStorageSourcePoolModeTypeFromString;
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e40c5ec..7c4fc67 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -2413,7 +2413,7 @@ qemuDomainGetImageIds(virQEMUDriverConfigPtr cfg,
vmlabel->label)
virParseOwnershipIds(vmlabel->label, uid, gid);
- if ((disklabel = virDomainDiskDefGetSecurityLabelDef(disk, "dac"))
&&
+ if ((disklabel = virStorageSourceGetSecurityLabelDef(disk->src, "dac"))
&&
disklabel->label)
virParseOwnershipIds(disklabel->label, uid, gid);
}
diff --git a/src/security/security_dac.c b/src/security/security_dac.c
index 9d5c25b..28f033d 100644
--- a/src/security/security_dac.c
+++ b/src/security/security_dac.c
@@ -302,7 +302,7 @@ virSecurityDACSetSecurityFileLabel(virDomainDiskDefPtr disk,
uid_t user;
gid_t group;
- disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk,
+ disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src,
SECURITY_DAC_NAME);
if (disk_seclabel && disk_seclabel->norelabel)
@@ -369,7 +369,7 @@ virSecurityDACRestoreSecurityImageLabelInt(virSecurityManagerPtr mgr,
if (secdef && secdef->norelabel)
return 0;
- disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk,
+ disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src,
SECURITY_DAC_NAME);
if (disk_seclabel && disk_seclabel->norelabel)
diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
index 228e5cb..0c34af8 100644
--- a/src/security/security_selinux.c
+++ b/src/security/security_selinux.c
@@ -1134,7 +1134,7 @@ virSecuritySELinuxRestoreSecurityImageLabelInt(virSecurityManagerPtr
mgr,
if (seclabel == NULL)
return 0;
- disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk,
+ disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src,
SECURITY_SELINUX_NAME);
if (seclabel->norelabel || (disk_seclabel &&
disk_seclabel->norelabel))
return 0;
@@ -1202,7 +1202,7 @@ virSecuritySELinuxSetSecurityFileLabel(virDomainDiskDefPtr disk,
virSecurityLabelDefPtr secdef = cbdata->secdef;
virSecuritySELinuxDataPtr data =
virSecurityManagerGetPrivateData(cbdata->manager);
- disk_seclabel = virDomainDiskDefGetSecurityLabelDef(disk,
+ disk_seclabel = virStorageSourceGetSecurityLabelDef(disk->src,
SECURITY_SELINUX_NAME);
if (disk_seclabel && disk_seclabel->norelabel)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 394c9e2..433ddc1 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -1519,6 +1519,21 @@ virStorageSourceCopySeclabels(virStorageSourcePtr to,
}
+virSecurityDeviceLabelDefPtr
+virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src,
+ const char *model)
+{
+ size_t i;
+
+ for (i = 0; i < src->nseclabels; i++) {
+ if (STREQ_NULLABLE(src->seclabels[i]->model, model))
+ return src->seclabels[i];
+ }
+
+ return NULL;
+}
+
+
static virStorageTimestampsPtr
virStorageTimestampsCopy(const virStorageTimestamps *src)
{
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index fec1b00..ccacdb2 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -312,6 +312,10 @@ int virStorageFileGetLVMKey(const char *path,
int virStorageFileGetSCSIKey(const char *path,
char **key);
+virSecurityDeviceLabelDefPtr
+virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src,
+ const char *model);
+
void virStorageNetHostDefClear(virStorageNetHostDefPtr def);
void virStorageNetHostDefFree(size_t nhosts, virStorageNetHostDefPtr hosts);
virStorageNetHostDefPtr virStorageNetHostDefCopy(size_t nhosts,
--
1.9.3