Introduce qemuDomainNamespaceMknodPath

Use this function in qemuDomainNamespaceSetup* functions which
only require creating one device.
This commit is contained in:
Ján Tomko 2017-11-15 17:43:51 +01:00
parent d3db304d2e
commit 323b9f72ef

View File

@ -9971,6 +9971,16 @@ qemuDomainNamespaceMknodPaths(virDomainObjPtr vm,
} }
static int
qemuDomainNamespaceMknodPath(virDomainObjPtr vm,
const char *path)
{
const char *paths[] = { path };
return qemuDomainNamespaceMknodPaths(vm, paths, 1);
}
int int
qemuDomainNamespaceSetupDisk(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, qemuDomainNamespaceSetupDisk(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
@ -10090,35 +10100,17 @@ qemuDomainNamespaceTeardownHostdev(virQEMUDriverPtr driver,
int int
qemuDomainNamespaceSetupMemory(virQEMUDriverPtr driver, qemuDomainNamespaceSetupMemory(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainMemoryDefPtr mem) virDomainMemoryDefPtr mem)
{ {
virQEMUDriverConfigPtr cfg = NULL;
char **devMountsPath = NULL;
size_t ndevMountsPath = 0;
int ret = -1;
if (mem->model != VIR_DOMAIN_MEMORY_MODEL_NVDIMM) if (mem->model != VIR_DOMAIN_MEMORY_MODEL_NVDIMM)
return 0; return 0;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (qemuDomainNamespaceMknodPath(vm, mem->nvdimmPath) < 0)
return 0; return -1;
cfg = virQEMUDriverGetConfig(driver); return 0;
if (qemuDomainGetPreservedMounts(cfg, vm,
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainAttachDeviceMknod(driver, vm, mem->nvdimmPath,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
@ -10156,18 +10148,11 @@ qemuDomainNamespaceTeardownMemory(virQEMUDriverPtr driver,
int int
qemuDomainNamespaceSetupChardev(virQEMUDriverPtr driver, qemuDomainNamespaceSetupChardev(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainChrDefPtr chr) virDomainChrDefPtr chr)
{ {
virQEMUDriverConfigPtr cfg = NULL;
char **devMountsPath = NULL;
size_t ndevMountsPath = 0;
const char *path; const char *path;
int ret = -1;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0;
if (!(path = virDomainChrSourceDefGetPath(chr->source))) if (!(path = virDomainChrSourceDefGetPath(chr->source)))
return 0; return 0;
@ -10177,22 +10162,10 @@ qemuDomainNamespaceSetupChardev(virQEMUDriverPtr driver,
chr->source->data.nix.listen) chr->source->data.nix.listen)
return 0; return 0;
cfg = virQEMUDriverGetConfig(driver); if (qemuDomainNamespaceMknodPath(vm, path) < 0)
if (qemuDomainGetPreservedMounts(cfg, vm, return -1;
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainAttachDeviceMknod(driver, return 0;
vm,
path,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
@ -10234,18 +10207,11 @@ qemuDomainNamespaceTeardownChardev(virQEMUDriverPtr driver,
int int
qemuDomainNamespaceSetupRNG(virQEMUDriverPtr driver, qemuDomainNamespaceSetupRNG(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainRNGDefPtr rng) virDomainRNGDefPtr rng)
{ {
virQEMUDriverConfigPtr cfg = NULL;
char **devMountsPath = NULL;
size_t ndevMountsPath = 0;
const char *path = NULL; const char *path = NULL;
int ret = -1;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0;
switch ((virDomainRNGBackend) rng->backend) { switch ((virDomainRNGBackend) rng->backend) {
case VIR_DOMAIN_RNG_BACKEND_RANDOM: case VIR_DOMAIN_RNG_BACKEND_RANDOM:
@ -10254,26 +10220,13 @@ qemuDomainNamespaceSetupRNG(virQEMUDriverPtr driver,
case VIR_DOMAIN_RNG_BACKEND_EGD: case VIR_DOMAIN_RNG_BACKEND_EGD:
case VIR_DOMAIN_RNG_BACKEND_LAST: case VIR_DOMAIN_RNG_BACKEND_LAST:
ret = 0; break;
goto cleanup;
} }
cfg = virQEMUDriverGetConfig(driver); if (path && qemuDomainNamespaceMknodPath(vm, path) < 0)
if (qemuDomainGetPreservedMounts(cfg, vm, return -1;
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainAttachDeviceMknod(driver, return 0;
vm,
path,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
@ -10324,35 +10277,14 @@ int
qemuDomainNamespaceSetupInput(virDomainObjPtr vm, qemuDomainNamespaceSetupInput(virDomainObjPtr vm,
virDomainInputDefPtr input) virDomainInputDefPtr input)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverPtr driver = priv->driver;
virQEMUDriverConfigPtr cfg = NULL;
char **devMountsPath = NULL;
size_t ndevMountsPath = 0;
const char *path = NULL; const char *path = NULL;
int ret = -1;
if (!(path = virDomainInputDefGetPath(input))) if (!(path = virDomainInputDefGetPath(input)))
return 0; return 0;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT)) if (path && qemuDomainNamespaceMknodPath(vm, path) < 0)
return 0; return -1;
return 0;
cfg = virQEMUDriverGetConfig(driver);
if (qemuDomainGetPreservedMounts(cfg, vm,
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainAttachDeviceMknod(driver, vm, path,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }