[PATCH v1 30/34] qemuDomainNamespaceTeardownHostdev: Unlink paths in one go

Michal Privoznik posted 34 patches 5 years, 6 months ago
[PATCH v1 30/34] qemuDomainNamespaceTeardownHostdev: Unlink paths in one go
Posted by Michal Privoznik 5 years, 6 months ago
In my attempt to deduplicate the code, we can use
qemuDomainSetupHostdev() to obtain the list of paths to unlink
and then pass it to qemuDomainNamespaceUnlinkPaths() to unlink
them in a single fork.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 src/qemu/qemu_domain_namespace.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/src/qemu/qemu_domain_namespace.c b/src/qemu/qemu_domain_namespace.c
index 135842e212..8251554e73 100644
--- a/src/qemu/qemu_domain_namespace.c
+++ b/src/qemu/qemu_domain_namespace.c
@@ -1451,20 +1451,18 @@ int
 qemuDomainNamespaceTeardownHostdev(virDomainObjPtr vm,
                                    virDomainHostdevDefPtr hostdev)
 {
-    g_autofree char *path = NULL;
+    VIR_AUTOSTRINGLIST paths = NULL;
 
     if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
         return 0;
 
-    if (qemuDomainGetHostdevPath(hostdev, &path, NULL) < 0)
+    if (qemuDomainSetupHostdev(vm,
+                               hostdev,
+                               true,
+                               &paths) < 0)
         return -1;
 
-    if (path && qemuDomainNamespaceUnlinkPath(vm, path) < 0)
-        return -1;
-
-    if (qemuHostdevNeedsVFIO(hostdev) &&
-        !qemuDomainNeedsVFIO(vm->def) &&
-        qemuDomainNamespaceUnlinkPath(vm, QEMU_DEV_VFIO) < 0)
+    if (qemuDomainNamespaceUnlinkPaths(vm, (const char **) paths) < 0)
         return -1;
 
     return 0;
-- 
2.26.2

Re: [PATCH v1 30/34] qemuDomainNamespaceTeardownHostdev: Unlink paths in one go
Posted by Ján Tomko 5 years, 6 months ago
On a Wednesday in 2020, Michal Privoznik wrote:
>In my attempt to deduplicate the code, we can use
>qemuDomainSetupHostdev() to obtain the list of paths to unlink
>and then pass it to qemuDomainNamespaceUnlinkPaths() to unlink
>them in a single fork.
>
>Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
>---
> src/qemu/qemu_domain_namespace.c | 14 ++++++--------
> 1 file changed, 6 insertions(+), 8 deletions(-)
>
>diff --git a/src/qemu/qemu_domain_namespace.c b/src/qemu/qemu_domain_namespace.c
>index 135842e212..8251554e73 100644
>--- a/src/qemu/qemu_domain_namespace.c
>+++ b/src/qemu/qemu_domain_namespace.c
>@@ -1451,20 +1451,18 @@ int
> qemuDomainNamespaceTeardownHostdev(virDomainObjPtr vm,
>                                    virDomainHostdevDefPtr hostdev)
> {
>-    g_autofree char *path = NULL;
>+    VIR_AUTOSTRINGLIST paths = NULL;
>
>     if (!qemuDomainNamespaceEnabled(vm, QEMU_DOMAIN_NS_MOUNT))
>         return 0;
>
>-    if (qemuDomainGetHostdevPath(hostdev, &path, NULL) < 0)
>+    if (qemuDomainSetupHostdev(vm,

Yeah, SetupHostdev is definitely a misleading name.

GetHostdevPaths?
PrepareHostdevPaths?

>+                               hostdev,
>+                               true,
>+                               &paths) < 0)
>         return -1;
>
>-    if (path && qemuDomainNamespaceUnlinkPath(vm, path) < 0)
>-        return -1;
>-
>-    if (qemuHostdevNeedsVFIO(hostdev) &&
>-        !qemuDomainNeedsVFIO(vm->def) &&
>-        qemuDomainNamespaceUnlinkPath(vm, QEMU_DEV_VFIO) < 0)
>+    if (qemuDomainNamespaceUnlinkPaths(vm, (const char **) paths) < 0)
>         return -1;
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano