From: Michal Privoznik Date: Sat, 27 May 2017 10:24:30 +0000 (+0200) Subject: qemu: mkdir memory_backing_dir on startup X-Git-Tag: v3.4.0~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3bab51e05656332f7952958705e59046ce30daa3;p=thirdparty%2Flibvirt.git qemu: mkdir memory_backing_dir on startup In 48d9e6cdcc and friends we've allowed users to back guest memory by a file inside the host. And in order to keep things manageable the memory_backing_dir variable was introduced to qemu.conf to specify the directory where the files are kept. However, libvirt's policy is that directories are created on domain startup if they don't exist. We've missed this one. Signed-off-by: Michal Privoznik --- diff --git a/docs/news.xml b/docs/news.xml index 649350a904..8ef9da78b7 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -71,6 +71,15 @@
+ + + qemu: Create memory_backing_dir on startup + + + Libvirt's policy is that directories are created on startup if + they don't exist. We've missed this one. + +
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 67f54282a0..fcab7ddf82 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -706,6 +706,11 @@ qemuStateInitialize(bool privileged, cfg->nvramDir); goto error; } + if (virFileMakePath(cfg->memoryBackingDir) < 0) { + virReportSystemError(errno, _("Failed to create memory backing dir %s"), + cfg->memoryBackingDir); + goto error; + } qemu_driver->qemuImgBinary = virFindFileInPath("qemu-img"); @@ -830,6 +835,13 @@ qemuStateInitialize(bool privileged, (int) cfg->group); goto error; } + if (chown(cfg->memoryBackingDir, cfg->user, cfg->group) < 0) { + virReportSystemError(errno, + _("unable to set ownership of '%s' to %d:%d"), + cfg->memoryBackingDir, (int) cfg->user, + (int) cfg->group); + goto error; + } run_uid = cfg->user; run_gid = cfg->group;