mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: drop support for monitor connections on PTYs
Libvirt switched to using a UNIX socket for monitors in 2009 for version 0.7.0. It seems unlikely that there is a running QEMU process that hasn't been restarted for 11 years while also taking a libvirt upgrade. Therefore we can drop support for opening a PTY for the QEMU monitor. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
59afd9764d
commit
9b82e2c4b0
@ -77,7 +77,6 @@ struct _qemuMonitor {
|
|||||||
* = 0: not registered
|
* = 0: not registered
|
||||||
* < 0: an error occurred during the registration of @fd */
|
* < 0: an error occurred during the registration of @fd */
|
||||||
int watch;
|
int watch;
|
||||||
int hasSendFD;
|
|
||||||
|
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
|
|
||||||
@ -303,21 +302,6 @@ qemuMonitorOpenUnix(const char *monitor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
qemuMonitorOpenPty(const char *monitor)
|
|
||||||
{
|
|
||||||
int monfd;
|
|
||||||
|
|
||||||
if ((monfd = open(monitor, O_RDWR)) < 0) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("Unable to open monitor path %s"), monitor);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return monfd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* This method processes data that has been received
|
/* This method processes data that has been received
|
||||||
* from the monitor. Looking for async events and
|
* from the monitor. Looking for async events and
|
||||||
* replies/errors.
|
* replies/errors.
|
||||||
@ -434,12 +418,6 @@ qemuMonitorIOWrite(qemuMonitorPtr mon)
|
|||||||
if (!mon->msg || mon->msg->txOffset == mon->msg->txLength)
|
if (!mon->msg || mon->msg->txOffset == mon->msg->txLength)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (mon->msg->txFD != -1 && !mon->hasSendFD) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Monitor does not support sending of file descriptors"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
buf = mon->msg->txBuffer + mon->msg->txOffset;
|
buf = mon->msg->txBuffer + mon->msg->txOffset;
|
||||||
len = mon->msg->txLength - mon->msg->txOffset;
|
len = mon->msg->txLength - mon->msg->txOffset;
|
||||||
if (mon->msg->txFD == -1)
|
if (mon->msg->txFD == -1)
|
||||||
@ -707,7 +685,6 @@ qemuMonitorIO(int watch, int fd, int events, void *opaque)
|
|||||||
static qemuMonitorPtr
|
static qemuMonitorPtr
|
||||||
qemuMonitorOpenInternal(virDomainObjPtr vm,
|
qemuMonitorOpenInternal(virDomainObjPtr vm,
|
||||||
int fd,
|
int fd,
|
||||||
bool hasSendFD,
|
|
||||||
qemuMonitorCallbacksPtr cb,
|
qemuMonitorCallbacksPtr cb,
|
||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
@ -736,7 +713,6 @@ qemuMonitorOpenInternal(virDomainObjPtr vm,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
mon->fd = fd;
|
mon->fd = fd;
|
||||||
mon->hasSendFD = hasSendFD;
|
|
||||||
mon->vm = virObjectRef(vm);
|
mon->vm = virObjectRef(vm);
|
||||||
mon->waitGreeting = true;
|
mon->waitGreeting = true;
|
||||||
mon->cb = cb;
|
mon->cb = cb;
|
||||||
@ -810,7 +786,6 @@ qemuMonitorOpen(virDomainObjPtr vm,
|
|||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
bool hasSendFD = false;
|
|
||||||
qemuMonitorPtr ret = NULL;
|
qemuMonitorPtr ret = NULL;
|
||||||
|
|
||||||
timeout += QEMU_DEFAULT_MONITOR_WAIT;
|
timeout += QEMU_DEFAULT_MONITOR_WAIT;
|
||||||
@ -819,28 +794,18 @@ qemuMonitorOpen(virDomainObjPtr vm,
|
|||||||
* deleted until the monitor gets its own reference. */
|
* deleted until the monitor gets its own reference. */
|
||||||
virObjectRef(vm);
|
virObjectRef(vm);
|
||||||
|
|
||||||
switch (config->type) {
|
if (config->type != VIR_DOMAIN_CHR_TYPE_UNIX) {
|
||||||
case VIR_DOMAIN_CHR_TYPE_UNIX:
|
|
||||||
hasSendFD = true;
|
|
||||||
virObjectUnlock(vm);
|
|
||||||
fd = qemuMonitorOpenUnix(config->data.nix.path,
|
|
||||||
vm->pid, retry, timeout);
|
|
||||||
virObjectLock(vm);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VIR_DOMAIN_CHR_TYPE_PTY:
|
|
||||||
virObjectUnlock(vm);
|
|
||||||
fd = qemuMonitorOpenPty(config->data.file.path);
|
|
||||||
virObjectLock(vm);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("unable to handle monitor type: %s"),
|
_("unable to handle monitor type: %s"),
|
||||||
virDomainChrTypeToString(config->type));
|
virDomainChrTypeToString(config->type));
|
||||||
break;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virObjectUnlock(vm);
|
||||||
|
fd = qemuMonitorOpenUnix(config->data.nix.path,
|
||||||
|
vm->pid, retry, timeout);
|
||||||
|
virObjectLock(vm);
|
||||||
|
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@ -850,7 +815,7 @@ qemuMonitorOpen(virDomainObjPtr vm,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = qemuMonitorOpenInternal(vm, fd, hasSendFD, cb, opaque);
|
ret = qemuMonitorOpenInternal(vm, fd, cb, opaque);
|
||||||
cleanup:
|
cleanup:
|
||||||
if (!ret)
|
if (!ret)
|
||||||
VIR_FORCE_CLOSE(fd);
|
VIR_FORCE_CLOSE(fd);
|
||||||
@ -865,7 +830,7 @@ qemuMonitorOpenFD(virDomainObjPtr vm,
|
|||||||
qemuMonitorCallbacksPtr cb,
|
qemuMonitorCallbacksPtr cb,
|
||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
return qemuMonitorOpenInternal(vm, sockfd, true, cb, opaque);
|
return qemuMonitorOpenInternal(vm, sockfd, cb, opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2675,13 +2640,6 @@ qemuMonitorSendFileHandle(qemuMonitorPtr mon,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mon->hasSendFD) {
|
|
||||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
|
|
||||||
_("qemu is not using a unix socket monitor, "
|
|
||||||
"cannot send fd %s"), fdname);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return qemuMonitorJSONSendFileHandle(mon, fdname, fd);
|
return qemuMonitorJSONSendFileHandle(mon, fdname, fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user