mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 15:27:47 +00:00
qemu: simplify monitor fd error handling
qemu_monitor was already returning -1 and setting errno to EINVAL on any attempt to send an fd without a unix socket, but this was a silent failure in the case of qemuDomainAttachHostPciDevice. Meanwhile, qemuDomainAttachNetDevice was doing some sanity checking for a better error message; it's better to consolidate that to a central point in the API. * src/qemu/qemu_hotplug.c (qemuDomainAttachNetDevice): Move sanity checking... * src/qemu/qemu_monitor.c (qemuMonitorSendFileHandle): ...into central location. Suggested by Chris Wright.
This commit is contained in:
parent
4c7508b4de
commit
058d4efa58
@ -568,28 +568,12 @@ int qemuDomainAttachNetDevice(virConnectPtr conn,
|
||||
|
||||
if (net->type == VIR_DOMAIN_NET_TYPE_BRIDGE ||
|
||||
net->type == VIR_DOMAIN_NET_TYPE_NETWORK) {
|
||||
if (priv->monConfig->type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("network device type '%s' cannot be attached: "
|
||||
"qemu is not using a unix socket monitor"),
|
||||
virDomainNetTypeToString(net->type));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((tapfd = qemuNetworkIfaceConnect(vm->def, conn, driver, net,
|
||||
qemuCaps)) < 0)
|
||||
return -1;
|
||||
if (qemuOpenVhostNet(vm->def, net, qemuCaps, &vhostfd) < 0)
|
||||
goto cleanup;
|
||||
} else if (net->type == VIR_DOMAIN_NET_TYPE_DIRECT) {
|
||||
if (priv->monConfig->type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("network device type '%s' cannot be attached: "
|
||||
"qemu is not using a unix socket monitor"),
|
||||
virDomainNetTypeToString(net->type));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((tapfd = qemuPhysIfaceConnect(vm->def, conn, driver, net,
|
||||
qemuCaps,
|
||||
VIR_VM_OP_CREATE)) < 0)
|
||||
|
@ -1777,6 +1777,19 @@ int qemuMonitorSendFileHandle(qemuMonitorPtr mon,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fd < 0) {
|
||||
qemuReportError(VIR_ERR_INVALID_ARG, "%s",
|
||||
_("fd must be valid"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!mon->hasSendFD) {
|
||||
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("qemu is not using a unix socket monitor, "
|
||||
"cannot send fd %s"), fdname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (mon->json)
|
||||
ret = qemuMonitorJSONSendFileHandle(mon, fdname, fd);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user