mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 22:25:25 +00:00
qemu_ns: Allow /dev/mapper/control for PR
If qemu-pr-helper is compiled with multipath support the first thing it does is open /dev/mapper/control. Since we're going to be running it inside qemu namespace we need to create it there. Unfortunately, we don't know if it was compiled with or without multipath so we have to create it anyway. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
13fe558fb4
commit
5bf89434ff
@ -109,6 +109,7 @@ VIR_ENUM_IMPL(qemuDomainNamespace, QEMU_DOMAIN_NS_LAST,
|
|||||||
#define PROC_MOUNTS "/proc/mounts"
|
#define PROC_MOUNTS "/proc/mounts"
|
||||||
#define DEVPREFIX "/dev/"
|
#define DEVPREFIX "/dev/"
|
||||||
#define DEV_VFIO "/dev/vfio/vfio"
|
#define DEV_VFIO "/dev/vfio/vfio"
|
||||||
|
#define DEVICE_MAPPER_CONTROL_PATH "/dev/mapper/control"
|
||||||
|
|
||||||
|
|
||||||
struct _qemuDomainLogContext {
|
struct _qemuDomainLogContext {
|
||||||
@ -10213,6 +10214,11 @@ qemuDomainSetupDisk(virQEMUDriverConfigPtr cfg ATTRIBUTE_UNUSED,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* qemu-pr-helper might require access to /dev/mapper/control. */
|
||||||
|
if (virStoragePRDefIsEnabled(disk->src->pr) &&
|
||||||
|
qemuDomainCreateDevice(DEVICE_MAPPER_CONTROL_PATH, data, true) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(dst);
|
VIR_FREE(dst);
|
||||||
@ -11224,6 +11230,7 @@ qemuDomainNamespaceSetupDisk(virDomainObjPtr vm,
|
|||||||
virStorageSourcePtr next;
|
virStorageSourcePtr next;
|
||||||
const char **paths = NULL;
|
const char **paths = NULL;
|
||||||
size_t npaths = 0;
|
size_t npaths = 0;
|
||||||
|
char *dmPath = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
|
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
|
||||||
@ -11240,11 +11247,18 @@ qemuDomainNamespaceSetupDisk(virDomainObjPtr vm,
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* qemu-pr-helper might require access to /dev/mapper/control. */
|
||||||
|
if (virStoragePRDefIsEnabled(src->pr) &&
|
||||||
|
(VIR_STRDUP(dmPath, DEVICE_MAPPER_CONTROL_PATH) < 0 ||
|
||||||
|
VIR_APPEND_ELEMENT_COPY(paths, npaths, dmPath) < 0))
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
if (qemuDomainNamespaceMknodPaths(vm, paths, npaths) < 0)
|
if (qemuDomainNamespaceMknodPaths(vm, paths, npaths) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
|
VIR_FREE(dmPath);
|
||||||
VIR_FREE(paths);
|
VIR_FREE(paths);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user