提交 9b82e2c4 编写于 作者: D Daniel P. Berrangé

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: NDaniel P. Berrangé <berrange@redhat.com>
上级 59afd976
...@@ -77,7 +77,6 @@ struct _qemuMonitor { ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册