[libvirt] [PATCH 2/3] Improve LXC startup error reporting

Daniel P. Berrange berrange at redhat.com
Thu Mar 7 18:54:04 UTC 2013


On Thu, Mar 07, 2013 at 05:03:18PM +0100, Peter Krempa wrote:
> On 03/07/13 16:58, Daniel P. Berrange wrote:
> >On Thu, Mar 07, 2013 at 04:40:05PM +0100, Peter Krempa wrote:
> >>On 03/06/13 17:16, Daniel P. Berrange wrote:
> >>>From: "Daniel P. Berrange" <berrange at redhat.com>
> >>>
> >>>Currently we rely on a VIR_ERROR message being logged by the
> >>>virRaiseError function to report LXC startup errors. This gives
> >>>the right message, but is rather ugly and can be truncated
> >>>if lots of log messages are written. Change the LXC controller
> >>>to explicitly print any virErrorPtr message to stderr. Then
> >>>change the driver to skip over anything that looks like a log
> >>>message.
> >>>
> >>>The result is that this
> >>>
> >>>error: Failed to start domain busy
> >>>error: internal error guest failed to start: 2013-03-04 19:46:42.846+0000: 1734: info : libvirt version: 1.0.2
> >>>2013-03-04 19:46:42.846+0000: 1734: error : virFileLoopDeviceAssociate:600 : Unable to open /root/disk.raw: No such file or directory
> >>>
> >>>changes to
> >>>
> >>>error: Failed to start domain busy
> >>>error: internal error guest failed to start: Unable to open /root/disk.raw: No such file or directory
> >>>Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> >>>---
> >>>  src/lxc/lxc_controller.c |   7 ++-
> >>>  src/lxc/lxc_process.c    | 130 ++++++++++++++++++++++++++++++++---------------
> >>>  2 files changed, 94 insertions(+), 43 deletions(-)
> >>>
> >>>diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
> >>>index 15aa334..78e8a70 100644
> >>>--- a/src/lxc/lxc_controller.c
> >>>+++ b/src/lxc/lxc_controller.c
> >>>@@ -1706,7 +1706,6 @@ int main(int argc, char *argv[])
> >>>      rc = virLXCControllerRun(ctrl);
> >>>
> >>>  cleanup:
> >>>-    virPidFileDelete(LXC_STATE_DIR, name);
> >>
> >> From the code later on, it doesn't seem you want retain the pid
> >>file. If you do so, errors won't be reported later on ... [1]
> >
> >
> >>>+
> >>>  /**
> >>>   * virLXCProcessStart:
> >>>   * @conn: pointer to connection
> >>>@@ -1124,9 +1164,15 @@ int virLXCProcessStart(virConnectPtr conn,
> >>>
> >>>      /* And get its pid */
> >>>      if ((r = virPidFileRead(driver->stateDir, vm->def->name, &vm->pid)) < 0) {
> >>
> >>[1] ... here.
> >
> >This handles the case where libvirt_lxc failed to startup at all,
> >so never wrote the pid file. There is aready code later in this
> >method which handles the case where libvirt_lxc started, but then
> >quit early, which still reads the log output.
> >
> 
> Ah, okay then. So ACK to the patch if you move the output of the
> error message in lxc_controller.c right after the cleanup label.

In fact double checking things, removing that virPidFileDelete
line is not required at all, so I've dropped it.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list