static int
-qemuNamespaceAttachDeviceMknodOne(qemuNamespaceMknodDataPtr data,
- virQEMUDriverConfigPtr cfg,
- virDomainObjPtr vm,
- const char *file,
- char * const *devMountsPath,
- size_t ndevMountsPath)
+qemuNamespacePrepareOneItem(qemuNamespaceMknodDataPtr data,
+ virQEMUDriverConfigPtr cfg,
+ virDomainObjPtr vm,
+ const char *file,
+ char * const *devMountsPath,
+ size_t ndevMountsPath)
{
long ttl = sysconf(_SC_SYMLOOP_MAX);
const char *next = file;
static int
-qemuDomainAttachDeviceMknod(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
- const char *file,
- char * const *devMountsPath,
- size_t ndevMountsPath)
+qemuNamespaceMknodPaths(virDomainObjPtr vm,
+ const char **paths,
+ size_t npaths)
{
- g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
+ qemuDomainObjPrivatePtr priv = vm->privateData;
+ virQEMUDriverPtr driver = priv->driver;
+ g_autoptr(virQEMUDriverConfig) cfg = NULL;
+ char **devMountsPath = NULL;
+ size_t ndevMountsPath = 0;
qemuNamespaceMknodData data = { 0 };
size_t i;
int ret = -1;
+ if (npaths == 0)
+ return 0;
+
+ cfg = virQEMUDriverGetConfig(driver);
+ if (qemuDomainGetPreservedMounts(cfg, vm,
+ &devMountsPath, NULL,
+ &ndevMountsPath) < 0)
+ return -1;
+
data.driver = driver;
data.vm = vm;
- if (qemuNamespaceAttachDeviceMknodOne(&data, cfg, vm, file,
- devMountsPath, ndevMountsPath) < 0)
- return -1;
+ for (i = 0; i < npaths; i++) {
+ if (qemuNamespacePrepareOneItem(&data, cfg, vm, paths[i],
+ devMountsPath, ndevMountsPath) < 0)
+ goto cleanup;
+ }
for (i = 0; i < data.nitems; i++) {
qemuNamespaceMknodItemPtr item = &data.items[i];
}
}
qemuNamespaceMknodDataClear(&data);
+ virStringListFreeCount(devMountsPath, ndevMountsPath);
return ret;
}
static int
-qemuDomainAttachDeviceMknod(virQEMUDriverPtr driver G_GNUC_UNUSED,
- virDomainObjPtr vm G_GNUC_UNUSED,
- const char *file G_GNUC_UNUSED,
- char * const *devMountsPath G_GNUC_UNUSED,
- size_t ndevMountsPath G_GNUC_UNUSED)
+qemuNamespaceMknodPaths(virDomainObjPtr vm G_GNUC_UNUSED,
+ const char **paths G_GNUC_UNUSED,
+ size_t npaths G_GNUC_UNUSED)
{
virReportSystemError(ENOSYS, "%s",
_("Namespaces are not supported on this platform."));
}
-static int
-qemuDomainNamespaceMknodPaths(virDomainObjPtr vm,
- const char **paths,
- size_t npaths)
-{
- qemuDomainObjPrivatePtr priv = vm->privateData;
- virQEMUDriverPtr driver = priv->driver;
- g_autoptr(virQEMUDriverConfig) cfg = NULL;
- char **devMountsPath = NULL;
- size_t ndevMountsPath = 0;
- int ret = -1;
- size_t i;
-
- if (!npaths)
- return 0;
-
- cfg = virQEMUDriverGetConfig(driver);
- if (qemuDomainGetPreservedMounts(cfg, vm,
- &devMountsPath, NULL,
- &ndevMountsPath) < 0)
- goto cleanup;
-
- for (i = 0; i < npaths; i++) {
- if (qemuDomainAttachDeviceMknod(driver,
- vm,
- paths[i],
- devMountsPath, ndevMountsPath) < 0)
- goto cleanup;
- }
-
- ret = 0;
- cleanup:
- virStringListFreeCount(devMountsPath, ndevMountsPath);
- return ret;
-}
-
-
static int
qemuDomainNamespaceMknodPath(virDomainObjPtr vm,
const char *path)
{
const char *paths[] = { path };
- return qemuDomainNamespaceMknodPaths(vm, paths, 1);
+ return qemuNamespaceMknodPaths(vm, paths, 1);
}
return -1;
npaths = virStringListLength((const char **) paths);
- if (qemuDomainNamespaceMknodPaths(vm, (const char **) paths, npaths) < 0)
+ if (qemuNamespaceMknodPaths(vm, (const char **) paths, npaths) < 0)
return -1;
return 0;
return -1;
npaths = virStringListLength((const char **) paths);
- if (qemuDomainNamespaceMknodPaths(vm, (const char **) paths, npaths) < 0)
+ if (qemuNamespaceMknodPaths(vm, (const char **) paths, npaths) < 0)
return -1;
return 0;