mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
qemu: Separate out hugepages basedir making
During its initialization, the QEMU driver iterates over hugetlbfs mount points, creating the driver specific path in each of them ($prefix/libvirt/qemu). This path is created with very wide mode (0777) because per-domain directories are then created under it. Separate this code into a function so that it can be re-used. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
e7d6f2d958
commit
72adf3b717
@ -1576,3 +1576,30 @@ qemuGetMemoryBackingPath(virQEMUDriver *driver,
|
|||||||
*memPath = g_strdup_printf("%s/%s", domainPath, alias);
|
*memPath = g_strdup_printf("%s/%s", domainPath, alias);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
qemuHugepageMakeBasedir(virQEMUDriver *driver,
|
||||||
|
virHugeTLBFS *hugepage)
|
||||||
|
{
|
||||||
|
|
||||||
|
g_autofree char *hugepagePath = NULL;
|
||||||
|
|
||||||
|
hugepagePath = qemuGetBaseHugepagePath(driver, hugepage);
|
||||||
|
|
||||||
|
if (!hugepagePath)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (g_mkdir_with_parents(hugepagePath, 0777) < 0) {
|
||||||
|
virReportSystemError(errno,
|
||||||
|
_("unable to create hugepage path %s"),
|
||||||
|
hugepagePath);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (driver->privileged &&
|
||||||
|
virFileUpdatePerm(hugepage->mnt_dir, 0, S_IXGRP | S_IXOTH) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -359,3 +359,6 @@ int qemuGetMemoryBackingPath(virQEMUDriver *driver,
|
|||||||
const virDomainDef *def,
|
const virDomainDef *def,
|
||||||
const char *alias,
|
const char *alias,
|
||||||
char **memPath);
|
char **memPath);
|
||||||
|
|
||||||
|
int qemuHugepageMakeBasedir(virQEMUDriver *driver,
|
||||||
|
virHugeTLBFS *hugepage);
|
||||||
|
@ -837,22 +837,7 @@ qemuStateInitialize(bool privileged,
|
|||||||
* it, since we can't assume the root mount point has permissions that
|
* it, since we can't assume the root mount point has permissions that
|
||||||
* will let our spawned QEMU instances use it. */
|
* will let our spawned QEMU instances use it. */
|
||||||
for (i = 0; i < cfg->nhugetlbfs; i++) {
|
for (i = 0; i < cfg->nhugetlbfs; i++) {
|
||||||
g_autofree char *hugepagePath = NULL;
|
if (qemuHugepageMakeBasedir(qemu_driver, &cfg->hugetlbfs[i]) < 0)
|
||||||
|
|
||||||
hugepagePath = qemuGetBaseHugepagePath(qemu_driver, &cfg->hugetlbfs[i]);
|
|
||||||
|
|
||||||
if (!hugepagePath)
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
if (g_mkdir_with_parents(hugepagePath, 0777) < 0) {
|
|
||||||
virReportSystemError(errno,
|
|
||||||
_("unable to create hugepage path %s"),
|
|
||||||
hugepagePath);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
if (privileged &&
|
|
||||||
virFileUpdatePerm(cfg->hugetlbfs[i].mnt_dir,
|
|
||||||
0, S_IXGRP | S_IXOTH) < 0)
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user