qemuBuildDiskFrontendAttributeErrorPolicy: Extract logic

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>
This commit is contained in:
Peter Krempa 2021-10-04 16:56:54 +02:00
parent 9616976433
commit d06e3000c4

View File

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