[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