static int
qemuDomainSetupRNG(virDomainRNGDefPtr rng,
- const struct qemuDomainCreateDeviceData *data)
+ char ***paths)
{
switch ((virDomainRNGBackend) rng->backend) {
case VIR_DOMAIN_RNG_BACKEND_RANDOM:
- if (qemuDomainCreateDevice(rng->source.file, data, false) < 0)
+ if (virStringListAdd(paths, rng->source.file) < 0)
return -1;
break;
static int
qemuDomainSetupAllRNGs(virDomainObjPtr vm,
- const struct qemuDomainCreateDeviceData *data)
+ char ***paths)
{
size_t i;
VIR_DEBUG("Setting up RNGs");
for (i = 0; i < vm->def->nrngs; i++) {
if (qemuDomainSetupRNG(vm->def->rngs[i],
- data) < 0)
+ paths) < 0)
return -1;
}
if (qemuDomainSetupAllInputs(vm, &paths) < 0)
return -1;
+ if (qemuDomainSetupAllRNGs(vm, &paths) < 0)
+ return -1;
+
if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0)
return -1;
if (qemuDomainSetupDev(mgr, vm, devPath) < 0)
goto cleanup;
- if (qemuDomainSetupAllRNGs(vm, &data) < 0)
- goto cleanup;
-
if (qemuDomainSetupLoader(vm, &data) < 0)
goto cleanup;
}
-static int
-qemuDomainNamespaceMknodPath(virDomainObjPtr vm,
- const char *path)
-{
- const char *paths[] = { path, NULL };
-
- return qemuNamespaceMknodPaths(vm, paths);
-}
-
-
static int
qemuDomainNamespaceUnlinkPaths(virDomainObjPtr vm,
const char **paths,
qemuDomainNamespaceSetupRNG(virDomainObjPtr vm,
virDomainRNGDefPtr rng)
{
- const char *path = NULL;
+ VIR_AUTOSTRINGLIST paths = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0;
- switch ((virDomainRNGBackend) rng->backend) {
- case VIR_DOMAIN_RNG_BACKEND_RANDOM:
- path = rng->source.file;
- break;
-
- case VIR_DOMAIN_RNG_BACKEND_EGD:
- case VIR_DOMAIN_RNG_BACKEND_BUILTIN:
- case VIR_DOMAIN_RNG_BACKEND_LAST:
- break;
- }
+ if (qemuDomainSetupRNG(rng, &paths) < 0)
+ return -1;
- if (path && qemuDomainNamespaceMknodPath(vm, path) < 0)
+ if (qemuNamespaceMknodPaths(vm, (const char **) paths) < 0)
return -1;
return 0;