]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virCaps: get rid of defaultDiskDriverName
authorPeter Krempa <pkrempa@redhat.com>
Mon, 11 Mar 2013 09:24:29 +0000 (10:24 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 4 Apr 2013 20:42:38 +0000 (22:42 +0200)
This patch removes the defaultDiskDriverName from the virCaps
structure. This particular default value is used only in the qemu driver
so this patch uses the recently added callback to fill the driver name
if it's needed instead of propagating it through virCaps.

13 files changed:
src/conf/capabilities.h
src/conf/domain_conf.c
src/qemu/qemu_conf.c
src/qemu/qemu_conf.h
src/qemu/qemu_domain.c
src/qemu/qemu_driver.c
tests/domainsnapshotxml2xmltest.c
tests/qemuargv2xmltest.c
tests/qemumonitorjsontest.c
tests/qemuxml2argvtest.c
tests/qemuxml2xmltest.c
tests/qemuxmlnstest.c
tests/securityselinuxlabeltest.c

index 064da80632d53549e32389891f68da003b963f9f..a3838e61a6917d2c2758175f6c07c514241d73bf 100644 (file)
@@ -164,7 +164,6 @@ struct _virCaps {
     /* Move to virDomainXMLOption later */
     unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN];
     unsigned int emulatorRequired : 1;
-    const char *defaultDiskDriverName;
     int defaultDiskDriverType; /* enum virStorageFileFormat */
     int (*defaultConsoleTargetType)(const char *ostype, virArch guestarch);
     bool hasWideScsiBus;
index c21c687278dad2bb20faa0e4b0ade7eaae345bae..3237fb1e9a769d0eedb72018e46b4c73d04765ad 100644 (file)
@@ -4829,11 +4829,6 @@ virDomainDiskDefParseXML(virCapsPtr caps,
         def->format = caps->defaultDiskDriverType;
     }
 
-    if (!def->driverName &&
-        caps->defaultDiskDriverName &&
-        !(def->driverName = strdup(caps->defaultDiskDriverName)))
-        goto no_memory;
-
     if (mirrorFormat) {
         def->mirrorFormat = virStorageFileFormatTypeFromString(mirrorFormat);
         if (def->mirrorFormat <= 0) {
@@ -4896,9 +4891,6 @@ cleanup:
     ctxt->node = save_ctxt;
     return def;
 
-no_memory:
-    virReportOOMError();
-
 error:
     virDomainDiskDefFree(def);
     def = NULL;
index 7ee60d6304f8ef0b30ddb2aae0248b12fa584a06..268223f75d79ffafabe392c0081b67685b55f3c5 100644 (file)
@@ -552,8 +552,9 @@ virQEMUDriverConfigPtr virQEMUDriverGetConfig(virQEMUDriverPtr driver)
 }
 
 virDomainXMLOptionPtr
-virQEMUDriverCreateXMLConf(void)
+virQEMUDriverCreateXMLConf(virQEMUDriverPtr driver)
 {
+    virQEMUDriverDomainDefParserConfig.priv = driver;
     return virDomainXMLOptionNew(&virQEMUDriverDomainDefParserConfig,
                                  &virQEMUDriverPrivateDataCallbacks,
                                  &virQEMUDriverDomainXMLNamespace);
@@ -574,10 +575,8 @@ virCapsPtr virQEMUDriverCreateCapabilities(virQEMUDriverPtr driver)
         goto no_memory;
 
     if (cfg->allowDiskFormatProbing) {
-        caps->defaultDiskDriverName = NULL;
         caps->defaultDiskDriverType = VIR_STORAGE_FILE_AUTO;
     } else {
-        caps->defaultDiskDriverName = "qemu";
         caps->defaultDiskDriverType = VIR_STORAGE_FILE_RAW;
     }
 
index 12f74be43650ba1870590e245ea063152a7ee920..52999200c4c99ccdcab5ebd85bafd0ff8ab470a3 100644 (file)
@@ -301,6 +301,7 @@ void qemuSharedDiskEntryFree(void *payload, const void *name)
     ATTRIBUTE_NONNULL(1);
 
 int qemuDriverAllocateID(virQEMUDriverPtr driver);
-virDomainXMLOptionPtr virQEMUDriverCreateXMLConf(void);
+virDomainXMLOptionPtr virQEMUDriverCreateXMLConf(virQEMUDriverPtr driver);
+
 
 #endif /* __QEMUD_CONF_H */
index 80e70cd36ce6725a787c0eae8497d5f4b105e1fc..2e7a98612e53d9cb8c42fb5e575f2ff43709fa75 100644 (file)
@@ -666,19 +666,38 @@ static int
 qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
                              virDomainDefPtr def ATTRIBUTE_UNUSED,
                              virCapsPtr caps ATTRIBUTE_UNUSED,
-                             void *opaque ATTRIBUTE_UNUSED)
+                             void *opaque)
 {
+    int ret = -1;
+    virQEMUDriverPtr driver = opaque;
+    virQEMUDriverConfigPtr cfg = NULL;
+
     if (dev->type == VIR_DOMAIN_DEVICE_NET &&
         dev->data.net->type != VIR_DOMAIN_NET_TYPE_HOSTDEV) {
         if (!dev->data.net->model &&
             !(dev->data.net->model = strdup("rtl8139")))
                 goto no_memory;
     }
-    return 0;
+
+    if (dev->type == VIR_DOMAIN_DEVICE_DISK &&
+        !dev->data.disk->driverName &&
+        driver &&
+        (cfg = virQEMUDriverGetConfig(driver))) {
+        if (!cfg->allowDiskFormatProbing &&
+            !(dev->data.disk->driverName = strdup("qemu"))) {
+            goto no_memory;
+        }
+    }
+
+    ret = 0;
+
+cleanup:
+    virObjectUnref(cfg);
+    return ret;
 
 no_memory:
     virReportOOMError();
-    return -1;
+    goto cleanup;
 }
 
 
index 1215fec6fa1ad7d039d160bce4305d5a6dc140fd..3f6241438cfda7cfbdb7d6a4596edc8557064c3d 100644 (file)
@@ -723,7 +723,7 @@ qemuStartup(bool privileged,
     if ((qemu_driver->caps = virQEMUDriverCreateCapabilities(qemu_driver)) == NULL)
         goto error;
 
-    if (!(qemu_driver->xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(qemu_driver->xmlopt = virQEMUDriverCreateXMLConf(qemu_driver)))
         goto error;
 
     /* If hugetlbfs is present, then we need to create a sub-directory within
index ac5137e5be760bc75132905b37a987e23c899721..6f1c600f7430cdfae3402e8a6efe3ddce696aa0a 100644 (file)
@@ -91,7 +91,7 @@ mymain(void)
     if ((driver.caps = testQemuCapsInit()) == NULL)
         return EXIT_FAILURE;
 
-    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
         return EXIT_FAILURE;
 
 # define DO_TEST(name, uuid, internal)                                  \
index ec250adffc5cef1042d21b61532f60dc4b903e53..9167d88d327f9456df589656c325f7c45c3aff7b 100644 (file)
@@ -120,7 +120,7 @@ mymain(void)
     if ((driver.caps = testQemuCapsInit()) == NULL)
         return EXIT_FAILURE;
 
-    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
         return EXIT_FAILURE;
 
 # define DO_TEST_FULL(name, extraFlags, migrateFrom)                     \
index fdf67a1bcc0547ccab1e1aa5cd9c7a16c8725303..24685c7ffc9f2689b7773e472e2720cbb058fc58 100644 (file)
@@ -451,7 +451,7 @@ mymain(void)
 #endif
 
     if (virThreadInitialize() < 0 ||
-        !(xmlopt = virQEMUDriverCreateXMLConf()))
+        !(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
         return EXIT_FAILURE;
 
     virEventRegisterDefaultImpl();
index 7a63e904d2db05ee533991942d5a48f6b193bcad..099fb3630aa320867f7272205281919092d916f4 100644 (file)
@@ -294,7 +294,7 @@ mymain(void)
 
     if ((driver.caps = testQemuCapsInit()) == NULL)
         return EXIT_FAILURE;
-    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
         return EXIT_FAILURE;
     VIR_FREE(driver.config->stateDir);
     if ((driver.config->stateDir = strdup("/nowhere")) == NULL)
index 8f892d194f8e8cfacc9f53af307819851f353e0a..aa058bd86baabdbf5869a5d0d919178b75b27ea4 100644 (file)
@@ -106,7 +106,7 @@ mymain(void)
     if ((driver.caps = testQemuCapsInit()) == NULL)
         return EXIT_FAILURE;
 
-    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
         return EXIT_FAILURE;
 
 # define DO_TEST_FULL(name, is_different, when)                         \
index dadf40cdb639bba5f89808ef5743b8d532a7d334..e6b42dca19725b5e4c43a516ca8558755e38cfa1 100644 (file)
@@ -204,7 +204,7 @@ mymain(void)
     driver.config = virQEMUDriverConfigNew(false);
     if ((driver.caps = testQemuCapsInit()) == NULL)
         return EXIT_FAILURE;
-    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(driver.xmlopt = virQEMUDriverCreateXMLConf(&driver)))
         return EXIT_FAILURE;
     if (virAsprintf(&map, "%s/src/cpu/cpu_map.xml", abs_top_srcdir) < 0 ||
         cpuMapOverride(map) < 0) {
index c595f9bbd81fcd27232972958f4386bff098b9ef..f585f6fad539b05819c5e23e4f643f61919cdeb7 100644 (file)
@@ -328,7 +328,7 @@ mymain(void)
     if ((caps = testQemuCapsInit()) == NULL)
         return EXIT_FAILURE;
 
-    if (!(xmlopt = virQEMUDriverCreateXMLConf()))
+    if (!(xmlopt = virQEMUDriverCreateXMLConf(NULL)))
         return EXIT_FAILURE;
 
 #define DO_TEST_LABELING(name) \