mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 21:55:25 +00:00
qemu_driver: Fix another domain startup error reporting race.
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).
This commit is contained in:
parent
4ff19ced3a
commit
34497fdb37
@ -1,3 +1,8 @@
|
||||
Fri May 29 10:10:00 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
* src/qemu_driver.c: qemu_driver: Fix another domain startup error
|
||||
reporting race.
|
||||
|
||||
Fri May 29 10:01:19 EDT 2009 Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
* src/qemu_driver.c : qemuDomainLookupByUUID: print correct UUID
|
||||
|
@ -746,17 +746,21 @@ qemudReadLogOutput(virConnectPtr conn,
|
||||
const char *what,
|
||||
int timeout)
|
||||
{
|
||||
int retries = timeout*10;
|
||||
int retries = (timeout*10);
|
||||
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--;
|
||||
|
Loading…
Reference in New Issue
Block a user