On Wed, Mar 18, 2020 at 06:32:12PM +0100, Michal Privoznik wrote:
If building namespace fails somewhere in the middle (that is some
files exists under devMountsSavePath[i]), then plain rmdir() is
not enough to remove dir. Umount the temp location and use
virFileDeleteTree() to remove the directory.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_domain.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 48bf5ae559..2724607311 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -15311,9 +15311,12 @@ qemuDomainBuildNamespace(virQEMUDriverConfigPtr cfg,
ret = 0;
cleanup:
for (i = 0; i < ndevMountsPath; i++) {
+#if defined(__linux__)
+ umount(devMountsSavePath[i]);
+#endif /* defined(__linux__) */
/* The path can be either a regular file or a dir. */
if (virFileIsDir(devMountsSavePath[i]))
- rmdir(devMountsSavePath[i]);
+ virFileDeleteTree(devMountsSavePath[i]);
else
unlink(devMountsSavePath[i]);
}
--
2.24.1
Reviewed-by: Pavel Mores <pmores(a)redhat.com>