提交 c3173289 编写于 作者: J Ján Tomko

Introduce qemuDomainNamespaceUnlinkPath

Use it in every qemuDomainNamespaceTeardown* function that only
wants to unlink one device.
上级 7a931a42
...@@ -10018,6 +10018,16 @@ qemuDomainNamespaceUnlinkPaths(virDomainObjPtr vm, ...@@ -10018,6 +10018,16 @@ qemuDomainNamespaceUnlinkPaths(virDomainObjPtr vm,
} }
static int
qemuDomainNamespaceUnlinkPath(virDomainObjPtr vm,
const char *path)
{
const char *paths[] = { path };
return qemuDomainNamespaceUnlinkPaths(vm, paths, 1);
}
int int
qemuDomainNamespaceSetupDisk(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, qemuDomainNamespaceSetupDisk(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
...@@ -10139,35 +10149,17 @@ qemuDomainNamespaceSetupMemory(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, ...@@ -10139,35 +10149,17 @@ qemuDomainNamespaceSetupMemory(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
int int
qemuDomainNamespaceTeardownMemory(virQEMUDriverPtr driver, qemuDomainNamespaceTeardownMemory(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 (qemuDomainNamespaceUnlinkPath(vm, mem->nvdimmPath) < 0)
return 0; return -1;
cfg = virQEMUDriverGetConfig(driver);
if (qemuDomainGetPreservedMounts(cfg, vm,
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainDetachDeviceUnlink(driver, vm, mem->nvdimmPath, return 0;
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
...@@ -10194,39 +10186,21 @@ qemuDomainNamespaceSetupChardev(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, ...@@ -10194,39 +10186,21 @@ qemuDomainNamespaceSetupChardev(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
int int
qemuDomainNamespaceTeardownChardev(virQEMUDriverPtr driver, qemuDomainNamespaceTeardownChardev(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainChrDefPtr chr) virDomainChrDefPtr chr)
{ {
virQEMUDriverConfigPtr cfg = NULL;
char **devMountsPath = NULL;
size_t ndevMountsPath = 0;
int ret = -1;
const char *path = NULL; const char *path = NULL;
if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
return 0;
if (chr->source->type != VIR_DOMAIN_CHR_TYPE_DEV) if (chr->source->type != VIR_DOMAIN_CHR_TYPE_DEV)
return 0; return 0;
path = chr->source->data.file.path; path = chr->source->data.file.path;
cfg = virQEMUDriverGetConfig(driver); if (qemuDomainNamespaceUnlinkPath(vm, path) < 0)
if (qemuDomainGetPreservedMounts(cfg, vm, return -1;
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainDetachDeviceUnlink(driver, vm, path,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0; return 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
...@@ -10255,19 +10229,12 @@ qemuDomainNamespaceSetupRNG(virQEMUDriverPtr driver ATTRIBUTE_UNUSED, ...@@ -10255,19 +10229,12 @@ qemuDomainNamespaceSetupRNG(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
int int
qemuDomainNamespaceTeardownRNG(virQEMUDriverPtr driver, qemuDomainNamespaceTeardownRNG(virQEMUDriverPtr driver ATTRIBUTE_UNUSED,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainRNGDefPtr rng) virDomainRNGDefPtr rng)
{ {
virQEMUDriverConfigPtr cfg = NULL;
char **devMountsPath = NULL;
size_t ndevMountsPath = 0;
int ret = -1;
const char *path = NULL; const char *path = NULL;
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:
path = rng->source.file; path = rng->source.file;
...@@ -10275,25 +10242,13 @@ qemuDomainNamespaceTeardownRNG(virQEMUDriverPtr driver, ...@@ -10275,25 +10242,13 @@ qemuDomainNamespaceTeardownRNG(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 && qemuDomainNamespaceUnlinkPath(vm, path) < 0)
if (qemuDomainGetPreservedMounts(cfg, vm, return -1;
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainDetachDeviceUnlink(driver, vm, path,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0; return 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
...@@ -10316,35 +10271,15 @@ int ...@@ -10316,35 +10271,15 @@ int
qemuDomainNamespaceTeardownInput(virDomainObjPtr vm, qemuDomainNamespaceTeardownInput(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 && qemuDomainNamespaceUnlinkPath(vm, path) < 0)
return 0; return -1;
cfg = virQEMUDriverGetConfig(driver);
if (qemuDomainGetPreservedMounts(cfg, vm,
&devMountsPath, NULL,
&ndevMountsPath) < 0)
goto cleanup;
if (qemuDomainDetachDeviceUnlink(driver, vm, path,
devMountsPath, ndevMountsPath) < 0)
goto cleanup;
ret = 0; return 0;
cleanup:
virStringListFreeCount(devMountsPath, ndevMountsPath);
virObjectUnref(cfg);
return ret;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册