]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Store loaded QEMU binary ctime in qemuCaps
authorJiri Denemark <jdenemar@redhat.com>
Thu, 27 Oct 2016 08:54:13 +0000 (10:54 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Fri, 4 Nov 2016 08:25:58 +0000 (09:25 +0100)
virQEMUCapsLoadCache loads QEMU capabilities from a file, but strangely
enough it returns the loaded QEMU binary ctime in qemuctime parameter
instead of storing it in qemuCaps.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
src/qemu/qemu_capabilities.c
src/qemu/qemu_capspriv.h
tests/testutilsqemu.c

index cd2abf7583572244ac86c681f5bf58d77cf2a708..2af441803cfcc5d570472b5b47e2f17b87789ef0 100644 (file)
@@ -3015,7 +3015,6 @@ int
 virQEMUCapsLoadCache(virCapsPtr caps,
                      virQEMUCapsPtr qemuCaps,
                      const char *filename,
-                     time_t *qemuctime,
                      time_t *selfctime,
                      unsigned long *selfvers)
 {
@@ -3052,7 +3051,7 @@ virQEMUCapsLoadCache(virCapsPtr caps,
                        _("missing qemuctime in QEMU capabilities XML"));
         goto cleanup;
     }
-    *qemuctime = (time_t)l;
+    qemuCaps->ctime = (time_t)l;
 
     if (virXPathLongLong("string(./selfctime)", ctxt, &l) < 0) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
@@ -3453,7 +3452,7 @@ virQEMUCapsInitCached(virCapsPtr caps,
     int ret = -1;
     char *binaryhash = NULL;
     struct stat sb;
-    time_t qemuctime;
+    time_t qemuctime = qemuCaps->ctime;
     time_t selfctime;
     unsigned long selfvers;
 
@@ -3489,7 +3488,7 @@ virQEMUCapsInitCached(virCapsPtr caps,
     }
 
     if (virQEMUCapsLoadCache(caps, qemuCaps, capsfile,
-                             &qemuctime, &selfctime, &selfvers) < 0) {
+                             &selfctime, &selfvers) < 0) {
         VIR_WARN("Failed to load cached caps from '%s' for '%s': %s",
                  capsfile, qemuCaps->binary, virGetLastErrorMessage());
         virResetLastError();
@@ -3505,7 +3504,7 @@ virQEMUCapsInitCached(virCapsPtr caps,
         VIR_DEBUG("Outdated cached capabilities '%s' for '%s' "
                   "(%lld vs %lld, %lld vs %lld, %lu vs %lu)",
                   capsfile, qemuCaps->binary,
-                  (long long)qemuctime, (long long)qemuCaps->ctime,
+                  (long long)qemuCaps->ctime, (long long)qemuctime,
                   (long long)selfctime, (long long)virGetSelfLastChanged(),
                   selfvers, (unsigned long)LIBVIR_VERSION_NUMBER);
         ignore_value(unlink(capsfile));
@@ -3520,6 +3519,7 @@ virQEMUCapsInitCached(virCapsPtr caps,
 
     ret = 1;
  cleanup:
+    qemuCaps->ctime = qemuctime;
     VIR_FREE(binaryhash);
     VIR_FREE(capsfile);
     VIR_FREE(capsdir);
index fab2c2acd3501b0b5edc5be320e9ad890a32aa13..f8ee47efdf7e7c0b0b26147a7bec2d30d011f48f 100644 (file)
@@ -51,7 +51,6 @@ virQEMUCapsNewForBinaryInternal(virCapsPtr caps,
 int virQEMUCapsLoadCache(virCapsPtr caps,
                          virQEMUCapsPtr qemuCaps,
                          const char *filename,
-                         time_t *qemuctime,
                          time_t *selfctime,
                          unsigned long *selfvers);
 char *virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps,
index e66903a3b02b30184c709667554cfa74cad8001f..56a89c913eeda1de0a3d04eb0ce067c338571d61 100644 (file)
@@ -495,13 +495,12 @@ qemuTestParseCapabilities(virCapsPtr caps,
                           const char *capsFile)
 {
     virQEMUCapsPtr qemuCaps = NULL;
-    time_t qemuctime;
     time_t selfctime;
     unsigned long version;
 
     if (!(qemuCaps = virQEMUCapsNew()) ||
         virQEMUCapsLoadCache(caps, qemuCaps, capsFile,
-                             &qemuctime, &selfctime, &version) < 0)
+                             &selfctime, &version) < 0)
         goto error;
 
     return qemuCaps;