]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuBlockStorageSourceGetBlockdevGetCacheProps: Return the cache object rather than...
authorPeter Krempa <pkrempa@redhat.com>
Wed, 18 Oct 2023 11:51:09 +0000 (13:51 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 26 Oct 2023 07:02:23 +0000 (09:02 +0200)
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_block.c

index 0f47b5b37fa59ef0d747f9e64e1806592118cf9a..41038fb994f31e1fd532f65dda68175a05dcca34 100644 (file)
@@ -913,24 +913,20 @@ qemuBlockStorageSourceGetVhostVdpaProps(virStorageSource *src)
 
 static int
 qemuBlockStorageSourceGetBlockdevGetCacheProps(virStorageSource *src,
-                                               virJSONValue *props)
+                                               virJSONValue **cache)
 {
-    g_autoptr(virJSONValue) cacheobj = NULL;
     bool direct = false;
     bool noflush = false;
 
     if (!qemuDomainDiskCachemodeFlags(src->cachemode, NULL, &direct, &noflush))
         return 0;
 
-    if (virJSONValueObjectAdd(&cacheobj,
+    if (virJSONValueObjectAdd(cache,
                               "b:direct", direct,
                               "b:no-flush", noflush,
                               NULL) < 0)
         return -1;
 
-    if (virJSONValueObjectAppend(props, "cache", &cacheobj) < 0)
-        return -1;
-
     return 0;
 }
 
@@ -1109,10 +1105,13 @@ qemuBlockStorageSourceGetBackendProps(virStorageSource *src,
             return NULL;
 
         if (!legacy) {
-            if (qemuBlockStorageSourceGetBlockdevGetCacheProps(src, fileprops) < 0)
+            g_autoptr(virJSONValue) cache = NULL;
+
+            if (qemuBlockStorageSourceGetBlockdevGetCacheProps(src, &cache) < 0)
                 return NULL;
 
             if (virJSONValueObjectAdd(&fileprops,
+                                      "A:cache", &cache,
                                       "T:read-only", ro,
                                       "T:auto-read-only", aro,
                                       NULL) < 0)
@@ -1278,10 +1277,14 @@ qemuBlockStorageSourceGetBlockdevFormatCommonProps(virStorageSource *src)
     int detectZeroesMode = virDomainDiskGetDetectZeroesMode(src->discard,
                                                             src->detect_zeroes);
     g_autoptr(virJSONValue) props = NULL;
+    g_autoptr(virJSONValue) cache = NULL;
 
     if (qemuBlockNodeNameValidate(qemuBlockStorageSourceGetFormatNodename(src)) < 0)
         return NULL;
 
+    if (qemuBlockStorageSourceGetBlockdevGetCacheProps(src, &cache) < 0)
+        return NULL;
+
     if (src->discard)
         discard = virDomainDiskDiscardTypeToString(src->discard);
 
@@ -1297,12 +1300,10 @@ qemuBlockStorageSourceGetBlockdevFormatCommonProps(virStorageSource *src)
                               "b:read-only", src->readonly,
                               "S:discard", discard,
                               "S:detect-zeroes", detectZeroes,
+                              "A:cache", &cache,
                               NULL) < 0)
         return NULL;
 
-    if (qemuBlockStorageSourceGetBlockdevGetCacheProps(src, props) < 0)
-        return NULL;
-
     return g_steal_pointer(&props);
 }
 
@@ -1439,10 +1440,14 @@ static virJSONValue *
 qemuBlockStorageSourceGetBlockdevStorageSliceProps(virStorageSource *src)
 {
     g_autoptr(virJSONValue) props = NULL;
+    g_autoptr(virJSONValue) cache = NULL;
 
     if (qemuBlockNodeNameValidate(src->sliceStorage->nodename) < 0)
         return NULL;
 
+    if (qemuBlockStorageSourceGetBlockdevGetCacheProps(src, &cache) < 0)
+        return NULL;
+
     if (virJSONValueObjectAdd(&props,
                               "s:driver", "raw",
                               "s:node-name", src->sliceStorage->nodename,
@@ -1451,12 +1456,10 @@ qemuBlockStorageSourceGetBlockdevStorageSliceProps(virStorageSource *src)
                               "s:file", qemuBlockStorageSourceGetStorageNodename(src),
                               "b:auto-read-only", true,
                               "s:discard", "unmap",
+                              "A:cache", &cache,
                               NULL) < 0)
         return NULL;
 
-    if (qemuBlockStorageSourceGetBlockdevGetCacheProps(src, props) < 0)
-        return NULL;
-
     return g_steal_pointer(&props);
 }