提交 2160f338 编写于 作者: M Michal Privoznik

qemu: Prepare RNGs when starting a domain

When starting a domain and separate mount namespace is used, we
have to create all the /dev entries that are configured for the
domain.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 8ec8a8c5
...@@ -7221,6 +7221,46 @@ qemuDomainSetupAllInputs(virQEMUDriverPtr driver, ...@@ -7221,6 +7221,46 @@ qemuDomainSetupAllInputs(virQEMUDriverPtr driver,
} }
static int
qemuDomainSetupRNG(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainRNGDefPtr rng,
const char *devPath)
{
switch ((virDomainRNGBackend) rng->backend) {
case VIR_DOMAIN_RNG_BACKEND_RANDOM:
if (qemuDomainCreateDevice(rng->source.file, devPath, false) < 0)
return -1;
case VIR_DOMAIN_RNG_BACKEND_EGD:
case VIR_DOMAIN_RNG_BACKEND_LAST:
/* nada */
break;
}
return 0;
}
static int
qemuDomainSetupAllRNGs(virQEMUDriverPtr driver,
virDomainObjPtr vm,
const char *devPath)
{
size_t i;
VIR_DEBUG("Setting up RNGs");
for (i = 0; i < vm->def->nrngs; i++) {
if (qemuDomainSetupRNG(driver,
vm->def->rngs[i],
devPath) < 0)
return -1;
}
VIR_DEBUG("Setup all RNGs");
return 0;
}
int int
qemuDomainBuildNamespace(virQEMUDriverPtr driver, qemuDomainBuildNamespace(virQEMUDriverPtr driver,
virDomainObjPtr vm) virDomainObjPtr vm)
...@@ -7274,6 +7314,9 @@ qemuDomainBuildNamespace(virQEMUDriverPtr driver, ...@@ -7274,6 +7314,9 @@ qemuDomainBuildNamespace(virQEMUDriverPtr driver,
if (qemuDomainSetupAllInputs(driver, vm, devPath) < 0) if (qemuDomainSetupAllInputs(driver, vm, devPath) < 0)
goto cleanup; goto cleanup;
if (qemuDomainSetupAllRNGs(driver, vm, devPath) < 0)
goto cleanup;
if (mount(devPath, "/dev", NULL, mount_flags, NULL) < 0) { if (mount(devPath, "/dev", NULL, mount_flags, NULL) < 0) {
virReportSystemError(errno, virReportSystemError(errno,
_("Failed to mount %s on /dev"), _("Failed to mount %s on /dev"),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册