6d3351
From d68103f77527b1f7a5a3cf1fdc4029a9181e6799 Mon Sep 17 00:00:00 2001
6d3351
Message-Id: <d68103f77527b1f7a5a3cf1fdc4029a9181e6799@dist-git>
6d3351
From: Michal Privoznik <mprivozn@redhat.com>
6d3351
Date: Wed, 31 May 2017 15:20:17 +0200
6d3351
Subject: [PATCH] qemu: mkdir memory_backing_dir on startup
6d3351
6d3351
https://bugzilla.redhat.com/show_bug.cgi?id=1214369
6d3351
6d3351
In 48d9e6cdcc and friends we've allowed users to back guest
6d3351
memory by a file inside the host. And in order to keep things
6d3351
manageable the memory_backing_dir variable was introduced to
6d3351
qemu.conf to specify the directory where the files are kept.
6d3351
However, libvirt's policy is that directories are created on
6d3351
domain startup if they don't exist. We've missed this one.
6d3351
6d3351
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
6d3351
(cherry picked from commit 3bab51e05656332f7952958705e59046ce30daa3)
6d3351
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
6d3351
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
6d3351
---
6d3351
 src/qemu/qemu_driver.c | 12 ++++++++++++
6d3351
 1 file changed, 12 insertions(+)
6d3351
6d3351
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
6d3351
index c31d07a659..b741c1b5a6 100644
6d3351
--- a/src/qemu/qemu_driver.c
6d3351
+++ b/src/qemu/qemu_driver.c
6d3351
@@ -706,6 +706,11 @@ qemuStateInitialize(bool privileged,
6d3351
                              cfg->nvramDir);
6d3351
         goto error;
6d3351
     }
6d3351
+    if (virFileMakePath(cfg->memoryBackingDir) < 0) {
6d3351
+        virReportSystemError(errno, _("Failed to create memory backing dir %s"),
6d3351
+                             cfg->memoryBackingDir);
6d3351
+        goto error;
6d3351
+    }
6d3351
 
6d3351
     qemu_driver->qemuImgBinary = virFindFileInPath("qemu-img");
6d3351
 
6d3351
@@ -830,6 +835,13 @@ qemuStateInitialize(bool privileged,
6d3351
                                  (int) cfg->group);
6d3351
             goto error;
6d3351
         }
6d3351
+        if (chown(cfg->memoryBackingDir, cfg->user, cfg->group) < 0) {
6d3351
+            virReportSystemError(errno,
6d3351
+                                 _("unable to set ownership of '%s' to %d:%d"),
6d3351
+                                 cfg->memoryBackingDir, (int) cfg->user,
6d3351
+                                 (int) cfg->group);
6d3351
+            goto error;
6d3351
+        }
6d3351
 
6d3351
         run_uid = cfg->user;
6d3351
         run_gid = cfg->group;
6d3351
-- 
6d3351
2.13.1
6d3351