On 05/28/2009 02:24 PM, Daniel P. Berrange wrote: > On Thu, May 28, 2009 at 01:16:23PM -0400, Cole Robinson wrote: >> Parse the command line output a bit earlier so we have a better chance >> of reporting the full error output on failure. >> >> I hit this when QEMU would try to boot an invalid kernel (virtinst bug). >> >> Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> >> --- >> src/qemu_driver.c | 13 ++++++++----- >> 1 files changed, 8 insertions(+), 5 deletions(-) >> >> diff --git a/src/qemu_driver.c b/src/qemu_driver.c >> index 9bd7d03..f62a46b 100644 >> --- a/src/qemu_driver.c >> +++ b/src/qemu_driver.c >> @@ -746,17 +746,21 @@ qemudReadLogOutput(virConnectPtr conn, >> const char *what, >> int timeout) >> { >> - int retries = timeout*10; >> + int retries = (timeout*10)+1; > > Seems to be magical not really related to the problem ? > Yeah, not really intended. I dropped this when I applied the patch. - Cole >> int got = 0; >> buf[0] = '\0'; >> >> while (retries) { >> - ssize_t ret; >> + ssize_t func_ret, ret; >> int isdead = 0; >> >> + func_ret = func(conn, vm, buf, fd); >> + >> if (kill(vm->pid, 0) == -1 && errno == ESRCH) >> isdead = 1; >> >> + /* Any failures should be detected before we read the log, so we >> + * always have something useful to report on failure. */ >> ret = saferead(fd, buf+got, buflen-got-1); >> if (ret < 0) { >> virReportSystemError(conn, errno, >> @@ -781,9 +785,8 @@ qemudReadLogOutput(virConnectPtr conn, >> return -1; >> } >> >> - ret = func(conn, vm, buf, fd); >> - if (ret <= 0) >> - return ret; >> + if (func_ret <= 0) >> + return func_ret; >> >> usleep(100*1000); >> retries--; >> -- > > > ACK > > Daniel -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list