{
qemuDomainObjPrivate *priv = vm->privateData;
unsigned long long until;
- int rc;
if (virTimeMillisNow(&until) < 0)
return 1;
until += qemuDomainGetUnplugTimeout(vm);
- while (priv->unplug.alias) {
- if ((rc = virDomainObjWaitUntil(vm, until)) == 1)
- return 0;
+ while (true) {
+ int rc;
- if (rc < 0) {
- VIR_WARN("Failed to wait on unplug condition for domain '%s' "
- "device '%s'", vm->def->name, priv->unplug.alias);
+ if ((rc = virDomainObjWaitUntil(vm, until)) < 0) {
+ VIR_WARN("Failed to wait on unplug condition for domain '%s' device '%s'",
+ vm->def->name, priv->unplug.alias);
return 1;
}
+
+ /* unplug event for this device was received, check the status */
+ if (!priv->unplug.alias)
+ break;
+
+ /* timeout */
+ if (rc == 1)
+ return 0;
}
if (priv->unplug.status == QEMU_DOMAIN_UNPLUGGING_DEVICE_STATUS_GUEST_REJECTED) {