/* @disk requires qemu-pr-helper but none is running.
* Start it now. */
- if (qemuProcessStartPRDaemon(vm, disk) < 0)
+ if (qemuProcessStartManagedPRDaemon(vm) < 0)
return -1;
return 1;
qemuDomainDelDiskSrcTLSObject(driver, vm, disk->src);
ignore_value(qemuHotplugPrepareDiskAccess(driver, vm, disk, NULL, true));
if (prdStarted)
- qemuProcessKillPRDaemon(vm);
+ qemuProcessKillManagedPRDaemon(vm);
goto cleanup;
}
}
if (stopPRDaemon)
- qemuProcessKillPRDaemon(vm);
+ qemuProcessKillManagedPRDaemon(vm);
qemuDomainReleaseDeviceAddress(vm, &disk->info, src);
void
-qemuProcessKillPRDaemon(virDomainObjPtr vm)
+qemuProcessKillManagedPRDaemon(virDomainObjPtr vm)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virErrorPtr orig_err;
int
-qemuProcessStartPRDaemon(virDomainObjPtr vm,
- const virDomainDiskDef *disk)
+qemuProcessStartManagedPRDaemon(virDomainObjPtr vm)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverPtr driver = priv->driver;
const unsigned long long timeout = 500000; /* ms */
int ret = -1;
- if (!virStoragePRDefIsManaged(disk->src->pr) ||
- priv->prDaemonRunning)
- return 0;
-
cfg = virQEMUDriverGetConfig(driver);
if (!virFileIsExecutable(cfg->prHelperName)) {
goto cleanup;
priv->prDaemonRunning = true;
- ret = 1;
+ ret = 0;
cleanup:
if (ret < 0) {
virCommandAbort(cmd);
static int
-qemuProcessMaybeStartPRDaemon(virDomainObjPtr vm)
+qemuProcessMaybeStartManagedPRDaemon(virDomainObjPtr vm)
{
+ bool hasManaged = false;
size_t i;
- int rv;
for (i = 0; i < vm->def->ndisks; i++) {
- const virDomainDiskDef *disk = vm->def->disks[i];
-
- if ((rv = qemuProcessStartPRDaemon(vm, disk)) < 0)
- return -1;
-
- if (rv > 0)
- return 1;
+ if (virStoragePRDefIsManaged(vm->def->disks[i]->src->pr)) {
+ hasManaged = true;
+ break;
+ }
}
- return 0;
+ if (!hasManaged)
+ return 0;
+
+ return qemuProcessStartManagedPRDaemon(vm);
}
if (qemuProcessResctrlCreate(driver, vm) < 0)
goto cleanup;
- VIR_DEBUG("Setting up PR daemon");
- if (qemuProcessMaybeStartPRDaemon(vm) < 0)
+ VIR_DEBUG("Setting up managed PR daemon");
+ if (qemuProcessMaybeStartManagedPRDaemon(vm) < 0)
goto cleanup;
VIR_DEBUG("Setting domain security labels");
qemuDomainMasterKeyRemove(priv);
/* Do this before we delete the tree and remove pidfile. */
- qemuProcessKillPRDaemon(vm);
+ qemuProcessKillManagedPRDaemon(vm);
virFileDeleteTree(priv->libDir);
virFileDeleteTree(priv->channelTargetDir);
virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob);
-int qemuProcessStartPRDaemon(virDomainObjPtr vm,
- const virDomainDiskDef *disk);
+int qemuProcessStartManagedPRDaemon(virDomainObjPtr vm);
-void qemuProcessKillPRDaemon(virDomainObjPtr vm);
+void qemuProcessKillManagedPRDaemon(virDomainObjPtr vm);
#endif /* __QEMU_PROCESS_H__ */