From d06e3000c4115abc8b9f297eb7fcba6802defb37 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 4 Oct 2021 16:56:54 +0200 Subject: [PATCH] qemuBuildDiskFrontendAttributeErrorPolicy: Extract logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Ján Tomko --- src/qemu/qemu_command.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 96247e953c..35a9a67aa8 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -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);