hostdev has mode "capabilities" for LXC, from formatdomain.html:
"
Block / character devices from the host can be passed through to
the guest using the hostdev element.
This is only possible with container based virtualization.
since after 1.0.1 for LXC
"
So forbid capabilities mode hostdev if domain is not LXC.
The related bug is:
https://bugzilla.redhat.com/show_bug.cgi?id=1111044
Signed-off-by: Jincheng Miao <jmiao(a)redhat.com>
---
src/conf/domain_conf.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 4114289..5ae6614 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9574,6 +9574,12 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
goto error;
break;
case VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES:
+ if (vmdef->virtType != VIR_DOMAIN_VIRT_LXC) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("Unsupported capabilities mode hostdev in %s"),
+ virDomainVirtTypeToString(vmdef->virtType));
+ goto error;
+ }
/* parse managed/mode/type, and the <source> element */
if (virDomainHostdevDefParseXMLCaps(node, ctxt, type, def) < 0)
goto error;
@@ -9596,7 +9602,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
if (def->info->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE &&
def->info->type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ virReportError(VIR_ERR_XML_DETAIL, "%s",
_("PCI host devices must use 'pci' address
type"));
goto error;
}
@@ -9605,7 +9611,7 @@ virDomainHostdevDefParseXML(virDomainXMLOptionPtr xmlopt,
if (def->info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE &&
virDomainHostdevAssignAddress(xmlopt, vmdef, def) < 0) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
+ virReportError(VIR_ERR_XML_DETAIL, "%s",
_("SCSI host devices must have address
specified"));
goto error;
}
--
1.8.3.1