]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuBuildDiskFrontendAttributeErrorPolicy: Extract logic
authorPeter Krempa <pkrempa@redhat.com>
Mon, 4 Oct 2021 14:56:54 +0000 (16:56 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 12 Oct 2021 08:26:04 +0000 (10:26 +0200)
Extract the logic to determine the actual settings into
'qemuBuildDiskGetErrorPolicy' so that it can be reused when we'll
convert the disk -device formatter to JSON.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_command.c

index 96247e953c6691e7c538a3b71cff0e5bf6069e1f..35a9a67aa89cf766e6c2348cc37a409ac466de81 100644 (file)
@@ -1963,28 +1963,37 @@ qemuBuildDiskThrottling(virDomainDiskDef *disk,
 
 
 static void
-qemuBuildDiskFrontendAttributeErrorPolicy(virDomainDiskDef *disk,
-                                          virBuffer *buf)
+qemuBuildDiskGetErrorPolicy(virDomainDiskDef *disk,
+                            const char **wpolicy,
+                            const char **rpolicy)
 {
-    const char *wpolicy = NULL;
-    const char *rpolicy = NULL;
-
     if (disk->error_policy)
-        wpolicy = virDomainDiskErrorPolicyTypeToString(disk->error_policy);
+        *wpolicy = virDomainDiskErrorPolicyTypeToString(disk->error_policy);
 
     if (disk->rerror_policy)
-        rpolicy = virDomainDiskErrorPolicyTypeToString(disk->rerror_policy);
+        *rpolicy = virDomainDiskErrorPolicyTypeToString(disk->rerror_policy);
 
     if (disk->error_policy == VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE) {
         /* in the case of enospace, the option is spelled
          * differently in qemu, and it's only valid for werror,
          * not for rerror, so leave rerror NULL.
          */
-        wpolicy = "enospc";
-    } else if (!rpolicy) {
+        *wpolicy = "enospc";
+    } else if (!*rpolicy) {
         /* for other policies, rpolicy can match wpolicy */
-        rpolicy = wpolicy;
+        *rpolicy = *wpolicy;
     }
+}
+
+
+static void
+qemuBuildDiskFrontendAttributeErrorPolicy(virDomainDiskDef *disk,
+                                          virBuffer *buf)
+{
+    const char *wpolicy = NULL;
+    const char *rpolicy = NULL;
+
+    qemuBuildDiskGetErrorPolicy(disk, &wpolicy, &rpolicy);
 
     if (wpolicy)
         virBufferAsprintf(buf, ",werror=%s", wpolicy);