]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
util: Don't require full disk definition when getting imagelabels
authorPeter Krempa <pkrempa@redhat.com>
Wed, 18 Jun 2014 16:39:47 +0000 (18:39 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Jun 2014 07:27:15 +0000 (09:27 +0200)
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
src/conf/domain_conf.h
src/libvirt_private.syms
src/qemu/qemu_domain.c
src/security/security_dac.c
src/security/security_selinux.c
src/util/virstoragefile.c
src/util/virstoragefile.h

index 41142897a115899dc4803dccbca5ab2325fe9e89..02c394f60e29b10f3f3cdefa4bc32a6276777a61 100644 (file)
@@ -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)
index a6ac95a2f8e9fdce91d54fd5e527b7998589b53d..6779a41ab4bc8ddf4c4ed0ca8a240f26ca037180 100644 (file)
@@ -2518,9 +2518,6 @@ virDomainObjGetState(virDomainObjPtr obj, int *reason)
 virSecurityLabelDefPtr
 virDomainDefGetSecurityLabelDef(virDomainDefPtr def, const char *model);
 
-virSecurityDeviceLabelDefPtr
-virDomainDiskDefGetSecurityLabelDef(virDomainDiskDefPtr def, const char *model);
-
 virSecurityDeviceLabelDefPtr
 virDomainChrDefGetSecurityLabelDef(virDomainChrDefPtr def, const char *model);
 
index 46c0f029f53a628cf82d02fc34e71900bd5ec7a6..9c1fc72f69ab57bdd1cc7391bad37ce81dbe10c6 100644 (file)
@@ -210,7 +210,6 @@ virDomainDiskCopyOnReadTypeToString;
 virDomainDiskDefAssignAddress;
 virDomainDiskDefForeachPath;
 virDomainDiskDefFree;
-virDomainDiskDefGetSecurityLabelDef;
 virDomainDiskDefNew;
 virDomainDiskDeviceTypeToString;
 virDomainDiskDiscardTypeToString;
@@ -1900,6 +1899,7 @@ virStorageSourceClear;
 virStorageSourceClearBackingStore;
 virStorageSourceFree;
 virStorageSourceGetActualType;
+virStorageSourceGetSecurityLabelDef;
 virStorageSourceNewFromBacking;
 virStorageSourcePoolDefFree;
 virStorageSourcePoolModeTypeFromString;
index e40c5ec18bc8f85987f9f82110bcfaff82b32b75..7c4fc67d501db9793fd380101c9e31179ee01664 100644 (file)
@@ -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);
 }
index 9d5c25b81ca9944f2e70bfc0f7e5469cb2b418f8..28f033dca843b6c382e9db765053f15cafc57245 100644 (file)
@@ -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)
index 228e5cbe6a950f4142a1a9988a28feefb5af762f..0c34af8be961492da4775aabc6aca60b3fddc4e2 100644 (file)
@@ -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)
index a23ac6a48fc65b1dbc0d92eae3368057424125b7..db2b4019c2e5d70c5d169169593a8f344c07df55 100644 (file)
@@ -1496,6 +1496,21 @@ virStorageNetHostDefCopy(size_t nhosts,
 }
 
 
+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;
+}
+
+
 void
 virStorageSourcePoolDefFree(virStorageSourcePoolDefPtr def)
 {
index 34b3625f02a31ceef3d8502a4677c252d516368f..35ac6182d9f4dd8da352564ee2c0610e2026e5d7 100644 (file)
@@ -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,