[libvirt] [PATCH 04/15] Move code for low level QEMU monitor interaction into separate file
Daniel Veillard
veillard at redhat.com
Wed Nov 4 11:09:39 UTC 2009
On Tue, Nov 03, 2009 at 02:49:58PM -0500, Daniel P. Berrange wrote:
> The qemu_driver.c code should not contain any code that interacts
> with the QEMU monitor at a low level. A previous commit moved all
> the command invocations out. This change moves out the code which
> actually opens the monitor device.
[...]
> +static int
> +qemuConnectMonitor(virDomainObjPtr vm, int reconnect)
> +{
> + int rc;
> + if ((rc = qemuMonitorOpen(vm, reconnect)) != 0) {
> + VIR_ERROR(_("Failed to connect monitor for %s: %d\n"),
> + vm->def->name, rc);
> + return -1;
> + }
>
> -static int qemudOpenMonitor(virConnectPtr conn,
> - virDomainObjPtr vm,
> - int reconnect);
> + if ((vm->monitorWatch = virEventAddHandle(vm->monitor,
> + VIR_EVENT_HANDLE_HANGUP | VIR_EVENT_HANDLE_ERROR,
> + qemudDispatchVMEvent,
Let's try to keep at 80 columns, even if we don't reindent exactly
under the opening brace
[...]
> +static int
> +qemuMonitorReadOutput(virDomainObjPtr vm,
> + int fd,
> + char *buf,
> + size_t buflen,
> + qemuMonitorHandleOutput func,
> + const char *what,
> + int timeout)
> +{
[...]
> + if (errno != EAGAIN) {
> + virReportSystemError(NULL, errno,
> + _("Failure while reading %s startup output"),
> + what);
> + return -1;
> + }
> +
> + ret = poll(&pfd, 1, timeout);
> + if (ret == 0) {
> + qemudReportError(NULL, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> + _("Timed out while reading %s startup output"), what);
> + return -1;
> + } else if (ret == -1) {
> + if (errno != EINTR) {
> + virReportSystemError(NULL, errno,
> + _("Failure while reading %s startup output"),
> + what);
> + return -1;
> + }
> + } else {
> + /* Make sure we continue loop & read any further data
> + available before dealing with EOF */
> + if (pfd.revents & (POLLIN | POLLHUP))
> + continue;
> +
> + qemudReportError(NULL, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
> + _("Failure while reading %s startup output"), what);
> + return -1;
same even if we might want to preserve the commit as a pure cut and
paste, then let's resize to keep in 80 column as a second commit.
[...]
> +static int
> +qemuMonitorCheckPrompt(virDomainObjPtr vm,
> + const char *output,
> + int fd)
> +{
> + if (strstr(output, "(qemu) ") == NULL)
> + return 1; /* keep reading */
just wondering, wouldn't it be safer to try to find the previous end
of line too ?
ACK !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list