]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: remove qemu-img help scraping
authorJán Tomko <jtomko@redhat.com>
Tue, 17 Apr 2018 21:00:33 +0000 (23:00 +0200)
committerJán Tomko <jtomko@redhat.com>
Mon, 7 May 2018 08:23:20 +0000 (10:23 +0200)
We have been checking whether qemu-img supports the -o compat
option by scraping the -help output.

Since we require QEMU 1.5.0 now and this option was introduced in 1.1,
assume we support it and ditch the help parsing code along with the
extra qemu-img invocation.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/storage/storage_util.c
src/storage/storage_util.h
tests/storagevolxml2argvtest.c

index 03f03b407e13d5499879406debbb9120f6b555c2..bc048e3dffdc167a83ae646b4128a2e2ade54ade 100644 (file)
@@ -787,61 +787,6 @@ storagePloopResize(virStorageVolDefPtr vol,
     return ret;
 }
 
-/* Flag values shared w/ storagevolxml2argvtest.c.
- *
- * QEMU_IMG_BACKING_FORMAT_OPTIONS (added in qemu 0.11)
- * QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT
- *    was made necessary due to 2.0 change to change the default
- *    qcow2 file format from 0.10 to 1.1.
- */
-enum {
-    QEMU_IMG_BACKING_FORMAT_OPTIONS = 0,
-    QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT,
-};
-
-static bool
-virStorageBackendQemuImgSupportsCompat(const char *qemuimg)
-{
-    bool ret = false;
-    char *output;
-    virCommandPtr cmd = NULL;
-
-    cmd = virCommandNewArgList(qemuimg, "create", "-o", "?", "-f", "qcow2",
-                               "/dev/null", NULL);
-
-    virCommandAddEnvString(cmd, "LC_ALL=C");
-    virCommandSetOutputBuffer(cmd, &output);
-
-    if (virCommandRun(cmd, NULL) < 0)
-        goto cleanup;
-
-    if (strstr(output, "\ncompat "))
-        ret = true;
-
- cleanup:
-    virCommandFree(cmd);
-    VIR_FREE(output);
-    return ret;
-}
-
-
-static int
-virStorageBackendQEMUImgBackingFormat(const char *qemuimg)
-{
-    /* As of QEMU 0.11 the [-o options] support was added via qemu
-     * commit id '9ea2ea71', so we start with that base and figure
-     * out what else we have */
-    int ret = QEMU_IMG_BACKING_FORMAT_OPTIONS;
-
-    /* QEMU 2.0 changed to using a format that only QEMU 1.1 and newer
-     * understands. Since we still support QEMU 0.12 and newer, we need
-     * to be able to handle the previous format as can be set via a
-     * compat=0.10 option. */
-    if (virStorageBackendQemuImgSupportsCompat(qemuimg))
-        ret = QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT;
-
-    return ret;
-}
 
 /* The _virStorageBackendQemuImgInfo separates the command line building from
  * the volume definition so that qemuDomainSnapshotCreateInactiveExternal can
@@ -1089,14 +1034,12 @@ storageBackendCreateQemuImgSetBacking(virStoragePoolObjPtr pool,
 
 static int
 storageBackendCreateQemuImgSetOptions(virCommandPtr cmd,
-                                      int imgformat,
                                       virStorageEncryptionInfoDefPtr enc,
                                       struct _virStorageBackendQemuImgInfo info)
 {
     char *opts = NULL;
 
-    if (info.format == VIR_STORAGE_FILE_QCOW2 && !info.compat &&
-        imgformat >= QEMU_IMG_BACKING_FORMAT_OPTIONS_COMPAT)
+    if (info.format == VIR_STORAGE_FILE_QCOW2 && !info.compat)
         info.compat = "0.10";
 
     if (storageBackendCreateQemuImgOpts(enc, &opts, info) < 0)
@@ -1170,16 +1113,13 @@ storageBackendResizeQemuImgImageOpts(virCommandPtr cmd,
 }
 
 
-/* Create a qemu-img virCommand from the supplied binary path,
- * volume definitions and imgformat
- */
+/* Create a qemu-img virCommand from the supplied arguments */
 virCommandPtr
 virStorageBackendCreateQemuImgCmdFromVol(virStoragePoolObjPtr pool,
                                          virStorageVolDefPtr vol,
                                          virStorageVolDefPtr inputvol,
                                          unsigned int flags,
                                          const char *create_tool,
-                                         int imgformat,
                                          const char *secretPath)
 {
     virCommandPtr cmd = NULL;
@@ -1293,7 +1233,7 @@ virStorageBackendCreateQemuImgCmdFromVol(virStoragePoolObjPtr pool,
         enc = &vol->target.encryption->encinfo;
     }
 
-    if (storageBackendCreateQemuImgSetOptions(cmd, imgformat, enc, info) < 0)
+    if (storageBackendCreateQemuImgSetOptions(cmd, enc, info) < 0)
         goto error;
     VIR_FREE(info.secretAlias);
 
@@ -1386,7 +1326,6 @@ storageBackendCreateQemuImg(virStoragePoolObjPtr pool,
 {
     int ret = -1;
     char *create_tool;
-    int imgformat;
     virCommandPtr cmd;
     char *secretPath = NULL;
 
@@ -1400,10 +1339,6 @@ storageBackendCreateQemuImg(virStoragePoolObjPtr pool,
         return -1;
     }
 
-    imgformat = virStorageBackendQEMUImgBackingFormat(create_tool);
-    if (imgformat < 0)
-        goto cleanup;
-
     if (vol->target.format == VIR_STORAGE_FILE_RAW &&
         vol->target.encryption &&
         vol->target.encryption->format == VIR_STORAGE_ENCRYPTION_FORMAT_LUKS) {
@@ -1414,7 +1349,7 @@ storageBackendCreateQemuImg(virStoragePoolObjPtr pool,
 
     cmd = virStorageBackendCreateQemuImgCmdFromVol(pool, vol, inputvol,
                                                    flags, create_tool,
-                                                   imgformat, secretPath);
+                                                   secretPath);
     if (!cmd)
         goto cleanup;
 
index e9cb98211586ef40f425935592497788eb9e073c..9307702754c276af4f761e2369a5b6e660c493dc 100644 (file)
@@ -159,7 +159,6 @@ virStorageBackendCreateQemuImgCmdFromVol(virStoragePoolObjPtr pool,
                                          virStorageVolDefPtr inputvol,
                                          unsigned int flags,
                                          const char *create_tool,
-                                         int imgformat,
                                          const char *secretPath);
 
 int virStorageBackendSCSIFindLUs(virStoragePoolObjPtr pool,
index 68ee9c3d8b00e34cddc4120629388cba463f1758..0265a0ffe2afa39df1dbdca1611a78950e53e6fc 100644 (file)
@@ -40,7 +40,6 @@ testCompareXMLToArgvFiles(bool shouldFail,
                           const char *inputvolxml,
                           const char *cmdline,
                           unsigned int flags,
-                          int imgformat,
                           unsigned long parse_flags)
 {
     char *actualCmdline = NULL;
@@ -82,7 +81,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
 
     cmd = virStorageBackendCreateQemuImgCmdFromVol(obj, vol,
                                                    inputvol, flags,
-                                                   create_tool, imgformat,
+                                                   create_tool,
                                                    NULL);
     if (!cmd) {
         if (shouldFail) {
@@ -118,7 +117,6 @@ struct testInfo {
     const char *inputvol;
     const char *cmdline;
     unsigned int flags;
-    int imgformat;
     unsigned long parseflags;
 };
 
@@ -154,7 +152,7 @@ testCompareXMLToArgvHelper(const void *data)
     result = testCompareXMLToArgvFiles(info->shouldFail, poolxml, volxml,
                                        inputpoolxml, inputvolxml,
                                        cmdline, info->flags,
-                                       info->imgformat, info->parseflags);
+                                       info->parseflags);
 
  cleanup:
     VIR_FREE(poolxml);
@@ -166,12 +164,6 @@ testCompareXMLToArgvHelper(const void *data)
     return result;
 }
 
-enum {
-    FMT_OPTIONS = 0,
-    FMT_COMPAT,
-};
-
-
 
 static int
 mymain(void)
@@ -183,7 +175,7 @@ mymain(void)
                      cmdline, flags) \
     do { \
         struct testInfo info = { shouldFail, pool, vol, inputpool, inputvol, \
-                                 cmdline, flags, FMT_COMPAT, parseflags }; \
+                                 cmdline, flags, parseflags }; \
         if (virTestRun("Storage Vol XML-2-argv " cmdline, \
                        testCompareXMLToArgvHelper, &info) < 0) \
             ret = -1; \