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 <mprivozn@redhat.com>
This commit is contained in:
Michal Privoznik 2017-05-27 12:24:30 +02:00
parent 5970b13982
commit 3bab51e056
2 changed files with 21 additions and 0 deletions

View File

@ -71,6 +71,15 @@
</change>
</section>
<section title="Bug fixes">
<change>
<summary>
qemu: Create memory_backing_dir on startup
</summary>
<description>
Libvirt's policy is that directories are created on startup if
they don't exist. We've missed this one.
</description>
</change>
</section>
</release>
<release version="v3.3.0" date="2017-05-05">

View File

@ -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;