mirror of https://gitee.com/openkylin/libvirt.git
lxc: wait for nbd device to be up to get its PIDs
The nbd device pid file doesn't appear immediately after starting qemu-nbd: adding a small loop to wait for it before getting it's processes PIDs.
This commit is contained in:
parent
8dd8df6f7c
commit
4749fec10d
|
@ -537,12 +537,27 @@ static int virLXCControllerAppendNBDPids(virLXCControllerPtr ctrl,
|
|||
size_t npids = 0;
|
||||
size_t i;
|
||||
int ret = -1;
|
||||
size_t loops = 0;
|
||||
pid_t pid;
|
||||
|
||||
if (!STRPREFIX(dev, "/dev/") ||
|
||||
virAsprintf(&pidpath, "/sys/devices/virtual/block/%s/pid", dev + 5) < 0)
|
||||
goto cleanup;
|
||||
|
||||
/* Wait for the pid file to appear */
|
||||
while (!virFileExists(pidpath)) {
|
||||
/* wait for 100ms before checking again, but don't do it for ever */
|
||||
if (errno == ENOENT && loops < 10) {
|
||||
usleep(100 * 1000);
|
||||
loops++;
|
||||
} else {
|
||||
virReportSystemError(errno,
|
||||
_("Cannot check NBD device %s pid"),
|
||||
dev + 5);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if (virPidFileReadPath(pidpath, &pid) < 0)
|
||||
goto cleanup;
|
||||
|
||||
|
|
Loading…
Reference in New Issue