Adjust disk definition for 'rawio' to use the TristateBool logic
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/conf/domain_conf.c | 16 ++++------------
src/conf/domain_conf.h | 3 +--
src/qemu/qemu_domain.c | 5 +++--
src/qemu/qemu_process.c | 2 +-
4 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 3ccec1c..c240c83 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -5954,12 +5954,7 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
}
if (rawio) {
- def->rawio_specified = true;
- if (STREQ(rawio, "yes")) {
- def->rawio = 1;
- } else if (STREQ(rawio, "no")) {
- def->rawio = 0;
- } else {
+ if ((def->rawio = virTristateBoolTypeFromString(rawio)) <= 0) {
virReportError(VIR_ERR_XML_ERROR,
_("unknown disk rawio setting '%s'"),
rawio);
@@ -15828,12 +15823,9 @@ virDomainDiskDefFormat(virBufferPtr buf,
virBufferAsprintf(buf,
"<disk type='%s' device='%s'",
type, device);
- if (def->rawio_specified) {
- if (def->rawio == 1) {
- virBufferAddLit(buf, " rawio='yes'");
- } else if (def->rawio == 0) {
- virBufferAddLit(buf, " rawio='no'");
- }
+ if (def->rawio) {
+ virBufferAsprintf(buf, " rawio='%s'",
+ virTristateBoolTypeToString(def->rawio));
}
if (def->sgio)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 640a4c5..afd9943 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -663,8 +663,7 @@ struct _virDomainDiskDef {
int startupPolicy; /* enum virDomainStartupPolicy */
bool transient;
virDomainDeviceInfo info;
- bool rawio_specified;
- int rawio; /* no = 0, yes = 1 */
+ int rawio; /* enum virTristateBool */
int sgio; /* enum virDomainDeviceSGIO */
int discard; /* enum virDomainDiskDiscard */
unsigned int iothread; /* unused = 0, > 0 specific thread # */
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 5859ba7..075406e 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -1945,8 +1945,9 @@ void qemuDomainObjCheckDiskTaint(virQEMUDriverPtr driver,
cfg->allowDiskFormatProbing)
qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_DISK_PROBING, logFD);
- if (disk->rawio == 1)
- qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES, logFD);
+ if (disk->rawio == VIR_TRISTATE_BOOL_YES)
+ qemuDomainObjTaint(driver, obj, VIR_DOMAIN_TAINT_HIGH_PRIVILEGES,
+ logFD);
virObjectUnref(cfg);
}
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index eecef12..43cf396 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -4357,7 +4357,7 @@ int qemuProcessStart(virConnectPtr conn,
virDomainDeviceDef dev;
virDomainDiskDefPtr disk = vm->def->disks[i];
- if (vm->def->disks[i]->rawio == 1) {
+ if (vm->def->disks[i]->rawio == VIR_TRISTATE_BOOL_YES) {
#ifdef CAP_SYS_RAWIO
virCommandAllowCap(cmd, CAP_SYS_RAWIO);
#else
--
1.9.3