Currently, all we need to do in qemuDomainCreateDeviceRecursive() is to
take given @device, get all kinds of info on it (major & minor numbers,
owner, seclabels) and create its copy at a temporary location @path
(usually /var/run/libvirt/qemu/$domName.dev), if @device live under
/dev. This is, however, very loose condition, as it also means
/dev/shm/* is created too. Therefor, we will need to pass more arguments
into the function for better decision making (e.g. list of mount points
under /dev). Instead of adding more arguments to all the functions (not
easily reachable because some functions are callback with strictly
defined type), lets just turn this one 'const char *' into a 'struct *'.
New "arguments" can be then added at no cost.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
src/qemu/qemu_domain.c | 106 ++++++++++++++++++++++++++-----------------------
1 file changed, 57 insertions(+), 49 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index be02d54..9e18f7e 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -7337,9 +7337,14 @@ qemuDomainGetPreservedMounts(virQEMUDriverConfigPtr cfg,
}
+struct qemuDomainCreateDeviceData {
+ const char *path; /* Path to temp new /dev location */
+};
+
+
static int
qemuDomainCreateDeviceRecursive(const char *device,
- const char *path,
+ const struct qemuDomainCreateDeviceData *data,
bool allow_noent,
unsigned int ttl)
{
@@ -7388,7 +7393,7 @@ qemuDomainCreateDeviceRecursive(const char *device,
*/
if (STRPREFIX(device, DEVPREFIX)) {
if (virAsprintf(&devicePath, "%s/%s",
- path, device + strlen(DEVPREFIX)) < 0)
+ data->path, device + strlen(DEVPREFIX)) < 0)
goto cleanup;
if (virFileMakeParentPath(devicePath) < 0) {
@@ -7449,7 +7454,7 @@ qemuDomainCreateDeviceRecursive(const char *device,
tmp = NULL;
}
- if (qemuDomainCreateDeviceRecursive(target, path,
+ if (qemuDomainCreateDeviceRecursive(target, data,
allow_noent, ttl - 1) < 0)
goto cleanup;
} else {
@@ -7533,12 +7538,12 @@ qemuDomainCreateDeviceRecursive(const char *device,
static int
qemuDomainCreateDevice(const char *device,
- const char *path,
+ const struct qemuDomainCreateDeviceData *data,
bool allow_noent)
{
long symloop_max = sysconf(_SC_SYMLOOP_MAX);
- return qemuDomainCreateDeviceRecursive(device, path,
+ return qemuDomainCreateDeviceRecursive(device, data,
allow_noent, symloop_max);
}
@@ -7546,7 +7551,7 @@ qemuDomainCreateDevice(const char *device,
static int
qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm ATTRIBUTE_UNUSED,
- const char *path)
+ const struct qemuDomainCreateDeviceData *data)
{
const char *const *devices = (const char *const *) cfg->cgroupDeviceACL;
size_t i;
@@ -7556,7 +7561,7 @@ qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg,
devices = defaultDeviceACL;
for (i = 0; devices[i]; i++) {
- if (qemuDomainCreateDevice(devices[i], path, true) < 0)
+ if (qemuDomainCreateDevice(devices[i], data, true) < 0)
goto cleanup;
}
@@ -7570,7 +7575,7 @@ static int
qemuDomainSetupDev(virQEMUDriverConfigPtr cfg,
virSecurityManagerPtr mgr,
virDomainObjPtr vm,
- const char *path)
+ const struct qemuDomainCreateDeviceData *data)
{
char *mount_options = NULL;
char *opts = NULL;
@@ -7592,10 +7597,10 @@ qemuDomainSetupDev(virQEMUDriverConfigPtr cfg,
"mode=755,size=65536%s", mount_options) < 0)
goto cleanup;
- if (virFileSetupDev(path, opts) < 0)
+ if (virFileSetupDev(data->path, opts) < 0)
goto cleanup;
- if (qemuDomainPopulateDevices(cfg, vm, path) < 0)
+ if (qemuDomainPopulateDevices(cfg, vm, data) < 0)
goto cleanup;
ret = 0;
@@ -7609,7 +7614,7 @@ qemuDomainSetupDev(virQEMUDriverConfigPtr cfg,
static int
qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainDiskDefPtr disk,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
virStorageSourcePtr next;
char *dst = NULL;
@@ -7621,7 +7626,7 @@ qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
continue;
}
- if (qemuDomainCreateDevice(next->path, devPath, false) < 0)
+ if (qemuDomainCreateDevice(next->path, data, false) < 0)
goto cleanup;
}
@@ -7635,7 +7640,7 @@ qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
static int
qemuDomainSetupAllDisks(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
size_t i;
VIR_DEBUG("Setting up disks");
@@ -7643,7 +7648,7 @@ qemuDomainSetupAllDisks(virQEMUDriverConfigPtr cfg,
for (i = 0; i < vm->def->ndisks; i++) {
if (qemuDomainSetupDisk(cfg,
vm->def->disks[i],
- devPath) < 0)
+ data) < 0)
return -1;
}
@@ -7655,7 +7660,7 @@ qemuDomainSetupAllDisks(virQEMUDriverConfigPtr cfg,
static int
qemuDomainSetupHostdev(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainHostdevDefPtr dev,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
int ret = -1;
char **path = NULL;
@@ -7665,7 +7670,7 @@ qemuDomainSetupHostdev(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
goto cleanup;
for (i = 0; i < npaths; i++) {
- if (qemuDomainCreateDevice(path[i], devPath, false) < 0)
+ if (qemuDomainCreateDevice(path[i], data, false) < 0)
goto cleanup;
}
@@ -7681,7 +7686,7 @@ qemuDomainSetupHostdev(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
static int
qemuDomainSetupAllHostdevs(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
size_t i;
@@ -7689,7 +7694,7 @@ qemuDomainSetupAllHostdevs(virQEMUDriverConfigPtr cfg,
for (i = 0; i < vm->def->nhostdevs; i++) {
if (qemuDomainSetupHostdev(cfg,
vm->def->hostdevs[i],
- devPath) < 0)
+ data) < 0)
return -1;
}
VIR_DEBUG("Setup all hostdevs");
@@ -7700,19 +7705,19 @@ qemuDomainSetupAllHostdevs(virQEMUDriverConfigPtr cfg,
static int
qemuDomainSetupMemory(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainMemoryDefPtr mem,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
if (mem->model != VIR_DOMAIN_MEMORY_MODEL_NVDIMM)
return 0;
- return qemuDomainCreateDevice(mem->nvdimmPath, devPath, false);
+ return qemuDomainCreateDevice(mem->nvdimmPath, data, false);
}
static int
qemuDomainSetupAllMemories(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
size_t i;
@@ -7720,7 +7725,7 @@ qemuDomainSetupAllMemories(virQEMUDriverConfigPtr cfg,
for (i = 0; i < vm->def->nmems; i++) {
if (qemuDomainSetupMemory(cfg,
vm->def->mems[i],
- devPath) < 0)
+ data) < 0)
return -1;
}
VIR_DEBUG("Setup all memories");
@@ -7733,26 +7738,26 @@ qemuDomainSetupChardev(virDomainDefPtr def ATTRIBUTE_UNUSED,
virDomainChrDefPtr dev,
void *opaque)
{
- const char *devPath = opaque;
+ const struct qemuDomainCreateDeviceData *data = opaque;
if (dev->source->type != VIR_DOMAIN_CHR_TYPE_DEV)
return 0;
- return qemuDomainCreateDevice(dev->source->data.file.path, devPath, false);
+ return qemuDomainCreateDevice(dev->source->data.file.path, data, false);
}
static int
qemuDomainSetupAllChardevs(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
VIR_DEBUG("Setting up chardevs");
if (virDomainChrDefForeach(vm->def,
true,
qemuDomainSetupChardev,
- (void *) devPath) < 0)
+ (void *) data) < 0)
return -1;
VIR_DEBUG("Setup all chardevs");
@@ -7763,7 +7768,7 @@ qemuDomainSetupAllChardevs(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
static int
qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
virDomainTPMDefPtr dev = vm->def->tpm;
@@ -7775,7 +7780,7 @@ qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
switch (dev->type) {
case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
if (qemuDomainCreateDevice(dev->data.passthrough.source.data.file.path,
- devPath, false) < 0)
+ data, false) < 0)
return -1;
break;
@@ -7792,7 +7797,7 @@ qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
static int
qemuDomainSetupGraphics(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainGraphicsDefPtr gfx,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
const char *rendernode = gfx->data.spice.rendernode;
@@ -7801,14 +7806,14 @@ qemuDomainSetupGraphics(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
!rendernode)
return 0;
- return qemuDomainCreateDevice(rendernode, devPath, false);
+ return qemuDomainCreateDevice(rendernode, data, false);
}
static int
qemuDomainSetupAllGraphics(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
size_t i;
@@ -7816,7 +7821,7 @@ qemuDomainSetupAllGraphics(virQEMUDriverConfigPtr cfg,
for (i = 0; i < vm->def->ngraphics; i++) {
if (qemuDomainSetupGraphics(cfg,
vm->def->graphics[i],
- devPath) < 0)
+ data) < 0)
return -1;
}
@@ -7828,13 +7833,13 @@ qemuDomainSetupAllGraphics(virQEMUDriverConfigPtr cfg,
static int
qemuDomainSetupInput(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainInputDefPtr input,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
int ret = -1;
switch ((virDomainInputType) input->type) {
case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH:
- if (qemuDomainCreateDevice(input->source.evdev, devPath, false) < 0)
+ if (qemuDomainCreateDevice(input->source.evdev, data, false) < 0)
goto cleanup;
break;
@@ -7855,7 +7860,7 @@ qemuDomainSetupInput(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
static int
qemuDomainSetupAllInputs(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
size_t i;
@@ -7863,7 +7868,7 @@ qemuDomainSetupAllInputs(virQEMUDriverConfigPtr cfg,
for (i = 0; i < vm->def->ninputs; i++) {
if (qemuDomainSetupInput(cfg,
vm->def->inputs[i],
- devPath) < 0)
+ data) < 0)
return -1;
}
VIR_DEBUG("Setup all inputs");
@@ -7874,11 +7879,11 @@ qemuDomainSetupAllInputs(virQEMUDriverConfigPtr cfg,
static int
qemuDomainSetupRNG(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
virDomainRNGDefPtr rng,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
switch ((virDomainRNGBackend) rng->backend) {
case VIR_DOMAIN_RNG_BACKEND_RANDOM:
- if (qemuDomainCreateDevice(rng->source.file, devPath, false) < 0)
+ if (qemuDomainCreateDevice(rng->source.file, data, false) < 0)
return -1;
case VIR_DOMAIN_RNG_BACKEND_EGD:
@@ -7894,7 +7899,7 @@ qemuDomainSetupRNG(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
static int
qemuDomainSetupAllRNGs(virQEMUDriverConfigPtr cfg,
virDomainObjPtr vm,
- const char *devPath)
+ const struct qemuDomainCreateDeviceData *data)
{
size_t i;
@@ -7902,7 +7907,7 @@ qemuDomainSetupAllRNGs(virQEMUDriverConfigPtr cfg,
for (i = 0; i < vm->def->nrngs; i++) {
if (qemuDomainSetupRNG(cfg,
vm->def->rngs[i],
- devPath) < 0)
+ data) < 0)
return -1;
}
@@ -7916,6 +7921,7 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
virSecurityManagerPtr mgr,
virDomainObjPtr vm)
{
+ struct qemuDomainCreateDeviceData data;
char *devPath = NULL;
char **devMountsPath = NULL, **devMountsSavePath = NULL;
size_t ndevMountsPath = 0, i;
@@ -7944,34 +7950,36 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
goto cleanup;
}
+ data.path = devPath;
+
if (virProcessSetupPrivateMountNS() < 0)
goto cleanup;
- if (qemuDomainSetupDev(cfg, mgr, vm, devPath) < 0)
+ if (qemuDomainSetupDev(cfg, mgr, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllDisks(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllDisks(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllHostdevs(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllHostdevs(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllMemories(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllMemories(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllChardevs(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllChardevs(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupTPM(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupTPM(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllGraphics(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllGraphics(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllInputs(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllInputs(cfg, vm, &data) < 0)
goto cleanup;
- if (qemuDomainSetupAllRNGs(cfg, vm, devPath) < 0)
+ if (qemuDomainSetupAllRNGs(cfg, vm, &data) < 0)
goto cleanup;
/* Save some mount points because we want to share them with the host */
--
2.10.2
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Fri, 2017-04-28 at 13:22 +0200, Michal Privoznik wrote:
> Currently, all we need to do in qemuDomainCreateDeviceRecursive() is to
> take given @device, get all kinds of info on it (major & minor numbers,
> owner, seclabels) and create its copy at a temporary location @path
> (usually /var/run/libvirt/qemu/$domName.dev), if @device live under
> /dev. This is, however, very loose condition, as it also means
> /dev/shm/* is created too. Therefor, we will need to pass more arguments
> into the function for better decision making (e.g. list of mount points
> under /dev). Instead of adding more arguments to all the functions (not
> easily reachable because some functions are callback with strictly
> defined type), lets just turn this one 'const char *' into a 'struct *'.
> New "arguments" can be then added at no cost.
>
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
> src/qemu/qemu_domain.c | 106 ++++++++++++++++++++++++++-----------------------
> 1 file changed, 57 insertions(+), 49 deletions(-)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index be02d54..9e18f7e 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -7337,9 +7337,14 @@ qemuDomainGetPreservedMounts(virQEMUDriverConfigPtr cfg,
> }
>
>
> +struct qemuDomainCreateDeviceData {
> + const char *path; /* Path to temp new /dev location */
> +};
> +
> +
> static int
> qemuDomainCreateDeviceRecursive(const char *device,
> - const char *path,
> + const struct qemuDomainCreateDeviceData *data,
> bool allow_noent,
> unsigned int ttl)
> {
> @@ -7388,7 +7393,7 @@ qemuDomainCreateDeviceRecursive(const char *device,
> */
> if (STRPREFIX(device, DEVPREFIX)) {
> if (virAsprintf(&devicePath, "%s/%s",
> - path, device + strlen(DEVPREFIX)) < 0)
> + data->path, device + strlen(DEVPREFIX)) < 0)
> goto cleanup;
>
> if (virFileMakeParentPath(devicePath) < 0) {
> @@ -7449,7 +7454,7 @@ qemuDomainCreateDeviceRecursive(const char *device,
> tmp = NULL;
> }
>
> - if (qemuDomainCreateDeviceRecursive(target, path,
> + if (qemuDomainCreateDeviceRecursive(target, data,
> allow_noent, ttl - 1) < 0)
> goto cleanup;
> } else {
> @@ -7533,12 +7538,12 @@ qemuDomainCreateDeviceRecursive(const char *device,
>
> static int
> qemuDomainCreateDevice(const char *device,
> - const char *path,
> + const struct qemuDomainCreateDeviceData *data,
> bool allow_noent)
> {
> long symloop_max = sysconf(_SC_SYMLOOP_MAX);
>
> - return qemuDomainCreateDeviceRecursive(device, path,
> + return qemuDomainCreateDeviceRecursive(device, data,
> allow_noent, symloop_max);
> }
>
> @@ -7546,7 +7551,7 @@ qemuDomainCreateDevice(const char *device,
> static int
> qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm ATTRIBUTE_UNUSED,
> - const char *path)
> + const struct qemuDomainCreateDeviceData *data)
> {
> const char *const *devices = (const char *const *) cfg->cgroupDeviceACL;
> size_t i;
> @@ -7556,7 +7561,7 @@ qemuDomainPopulateDevices(virQEMUDriverConfigPtr cfg,
> devices = defaultDeviceACL;
>
> for (i = 0; devices[i]; i++) {
> - if (qemuDomainCreateDevice(devices[i], path, true) < 0)
> + if (qemuDomainCreateDevice(devices[i], data, true) < 0)
> goto cleanup;
> }
>
> @@ -7570,7 +7575,7 @@ static int
> qemuDomainSetupDev(virQEMUDriverConfigPtr cfg,
> virSecurityManagerPtr mgr,
> virDomainObjPtr vm,
> - const char *path)
> + const struct qemuDomainCreateDeviceData *data)
> {
> char *mount_options = NULL;
> char *opts = NULL;
> @@ -7592,10 +7597,10 @@ qemuDomainSetupDev(virQEMUDriverConfigPtr cfg,
> "mode=755,size=65536%s", mount_options) < 0)
> goto cleanup;
>
> - if (virFileSetupDev(path, opts) < 0)
> + if (virFileSetupDev(data->path, opts) < 0)
> goto cleanup;
>
> - if (qemuDomainPopulateDevices(cfg, vm, path) < 0)
> + if (qemuDomainPopulateDevices(cfg, vm, data) < 0)
> goto cleanup;
>
> ret = 0;
> @@ -7609,7 +7614,7 @@ qemuDomainSetupDev(virQEMUDriverConfigPtr cfg,
> static int
> qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainDiskDefPtr disk,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> virStorageSourcePtr next;
> char *dst = NULL;
> @@ -7621,7 +7626,7 @@ qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> continue;
> }
>
> - if (qemuDomainCreateDevice(next->path, devPath, false) < 0)
> + if (qemuDomainCreateDevice(next->path, data, false) < 0)
> goto cleanup;
> }
>
> @@ -7635,7 +7640,7 @@ qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> static int
> qemuDomainSetupAllDisks(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> size_t i;
> VIR_DEBUG("Setting up disks");
> @@ -7643,7 +7648,7 @@ qemuDomainSetupAllDisks(virQEMUDriverConfigPtr cfg,
> for (i = 0; i < vm->def->ndisks; i++) {
> if (qemuDomainSetupDisk(cfg,
> vm->def->disks[i],
> - devPath) < 0)
> + data) < 0)
> return -1;
> }
>
> @@ -7655,7 +7660,7 @@ qemuDomainSetupAllDisks(virQEMUDriverConfigPtr cfg,
> static int
> qemuDomainSetupHostdev(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainHostdevDefPtr dev,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> int ret = -1;
> char **path = NULL;
> @@ -7665,7 +7670,7 @@ qemuDomainSetupHostdev(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> goto cleanup;
>
> for (i = 0; i < npaths; i++) {
> - if (qemuDomainCreateDevice(path[i], devPath, false) < 0)
> + if (qemuDomainCreateDevice(path[i], data, false) < 0)
> goto cleanup;
> }
>
> @@ -7681,7 +7686,7 @@ qemuDomainSetupHostdev(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> static int
> qemuDomainSetupAllHostdevs(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> size_t i;
>
> @@ -7689,7 +7694,7 @@ qemuDomainSetupAllHostdevs(virQEMUDriverConfigPtr cfg,
> for (i = 0; i < vm->def->nhostdevs; i++) {
> if (qemuDomainSetupHostdev(cfg,
> vm->def->hostdevs[i],
> - devPath) < 0)
> + data) < 0)
> return -1;
> }
> VIR_DEBUG("Setup all hostdevs");
> @@ -7700,19 +7705,19 @@ qemuDomainSetupAllHostdevs(virQEMUDriverConfigPtr cfg,
> static int
> qemuDomainSetupMemory(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainMemoryDefPtr mem,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> if (mem->model != VIR_DOMAIN_MEMORY_MODEL_NVDIMM)
> return 0;
>
> - return qemuDomainCreateDevice(mem->nvdimmPath, devPath, false);
> + return qemuDomainCreateDevice(mem->nvdimmPath, data, false);
> }
>
>
> static int
> qemuDomainSetupAllMemories(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> size_t i;
>
> @@ -7720,7 +7725,7 @@ qemuDomainSetupAllMemories(virQEMUDriverConfigPtr cfg,
> for (i = 0; i < vm->def->nmems; i++) {
> if (qemuDomainSetupMemory(cfg,
> vm->def->mems[i],
> - devPath) < 0)
> + data) < 0)
> return -1;
> }
> VIR_DEBUG("Setup all memories");
> @@ -7733,26 +7738,26 @@ qemuDomainSetupChardev(virDomainDefPtr def ATTRIBUTE_UNUSED,
> virDomainChrDefPtr dev,
> void *opaque)
> {
> - const char *devPath = opaque;
> + const struct qemuDomainCreateDeviceData *data = opaque;
>
> if (dev->source->type != VIR_DOMAIN_CHR_TYPE_DEV)
> return 0;
>
> - return qemuDomainCreateDevice(dev->source->data.file.path, devPath, false);
> + return qemuDomainCreateDevice(dev->source->data.file.path, data, false);
> }
>
>
> static int
> qemuDomainSetupAllChardevs(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> VIR_DEBUG("Setting up chardevs");
>
> if (virDomainChrDefForeach(vm->def,
> true,
> qemuDomainSetupChardev,
> - (void *) devPath) < 0)
> + (void *) data) < 0)
> return -1;
>
> VIR_DEBUG("Setup all chardevs");
> @@ -7763,7 +7768,7 @@ qemuDomainSetupAllChardevs(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> static int
> qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> virDomainTPMDefPtr dev = vm->def->tpm;
>
> @@ -7775,7 +7780,7 @@ qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> switch (dev->type) {
> case VIR_DOMAIN_TPM_TYPE_PASSTHROUGH:
> if (qemuDomainCreateDevice(dev->data.passthrough.source.data.file.path,
> - devPath, false) < 0)
> + data, false) < 0)
> return -1;
> break;
>
> @@ -7792,7 +7797,7 @@ qemuDomainSetupTPM(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> static int
> qemuDomainSetupGraphics(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainGraphicsDefPtr gfx,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> const char *rendernode = gfx->data.spice.rendernode;
>
> @@ -7801,14 +7806,14 @@ qemuDomainSetupGraphics(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> !rendernode)
> return 0;
>
> - return qemuDomainCreateDevice(rendernode, devPath, false);
> + return qemuDomainCreateDevice(rendernode, data, false);
> }
>
>
> static int
> qemuDomainSetupAllGraphics(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> size_t i;
>
> @@ -7816,7 +7821,7 @@ qemuDomainSetupAllGraphics(virQEMUDriverConfigPtr cfg,
> for (i = 0; i < vm->def->ngraphics; i++) {
> if (qemuDomainSetupGraphics(cfg,
> vm->def->graphics[i],
> - devPath) < 0)
> + data) < 0)
> return -1;
> }
>
> @@ -7828,13 +7833,13 @@ qemuDomainSetupAllGraphics(virQEMUDriverConfigPtr cfg,
> static int
> qemuDomainSetupInput(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainInputDefPtr input,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> int ret = -1;
>
> switch ((virDomainInputType) input->type) {
> case VIR_DOMAIN_INPUT_TYPE_PASSTHROUGH:
> - if (qemuDomainCreateDevice(input->source.evdev, devPath, false) < 0)
> + if (qemuDomainCreateDevice(input->source.evdev, data, false) < 0)
> goto cleanup;
> break;
>
> @@ -7855,7 +7860,7 @@ qemuDomainSetupInput(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> static int
> qemuDomainSetupAllInputs(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> size_t i;
>
> @@ -7863,7 +7868,7 @@ qemuDomainSetupAllInputs(virQEMUDriverConfigPtr cfg,
> for (i = 0; i < vm->def->ninputs; i++) {
> if (qemuDomainSetupInput(cfg,
> vm->def->inputs[i],
> - devPath) < 0)
> + data) < 0)
> return -1;
> }
> VIR_DEBUG("Setup all inputs");
> @@ -7874,11 +7879,11 @@ qemuDomainSetupAllInputs(virQEMUDriverConfigPtr cfg,
> static int
> qemuDomainSetupRNG(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> virDomainRNGDefPtr rng,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> switch ((virDomainRNGBackend) rng->backend) {
> case VIR_DOMAIN_RNG_BACKEND_RANDOM:
> - if (qemuDomainCreateDevice(rng->source.file, devPath, false) < 0)
> + if (qemuDomainCreateDevice(rng->source.file, data, false) < 0)
> return -1;
>
> case VIR_DOMAIN_RNG_BACKEND_EGD:
> @@ -7894,7 +7899,7 @@ qemuDomainSetupRNG(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
> static int
> qemuDomainSetupAllRNGs(virQEMUDriverConfigPtr cfg,
> virDomainObjPtr vm,
> - const char *devPath)
> + const struct qemuDomainCreateDeviceData *data)
> {
> size_t i;
>
> @@ -7902,7 +7907,7 @@ qemuDomainSetupAllRNGs(virQEMUDriverConfigPtr cfg,
> for (i = 0; i < vm->def->nrngs; i++) {
> if (qemuDomainSetupRNG(cfg,
> vm->def->rngs[i],
> - devPath) < 0)
> + data) < 0)
> return -1;
> }
>
> @@ -7916,6 +7921,7 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
> virSecurityManagerPtr mgr,
> virDomainObjPtr vm)
> {
> + struct qemuDomainCreateDeviceData data;
> char *devPath = NULL;
> char **devMountsPath = NULL, **devMountsSavePath = NULL;
> size_t ndevMountsPath = 0, i;
> @@ -7944,34 +7950,36 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
> goto cleanup;
> }
>
> + data.path = devPath;
> +
> if (virProcessSetupPrivateMountNS() < 0)
> goto cleanup;
>
> - if (qemuDomainSetupDev(cfg, mgr, vm, devPath) < 0)
> + if (qemuDomainSetupDev(cfg, mgr, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllDisks(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllDisks(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllHostdevs(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllHostdevs(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllMemories(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllMemories(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllChardevs(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllChardevs(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupTPM(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupTPM(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllGraphics(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllGraphics(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllInputs(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllInputs(cfg, vm, &data) < 0)
> goto cleanup;
>
> - if (qemuDomainSetupAllRNGs(cfg, vm, devPath) < 0)
> + if (qemuDomainSetupAllRNGs(cfg, vm, &data) < 0)
> goto cleanup;
>
> /* Save some mount points because we want to share them with the host */
ACK
--
Cedric
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2026 Red Hat, Inc.