mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-14 08:35:15 +00:00
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…
x
Reference in New Issue
Block a user