From: Michal Privoznik Date: Mon, 5 Sep 2022 08:34:44 +0000 (+0200) Subject: qemu_process: Don't require a hugetlbfs mount for memfd X-Git-Tag: v8.8.0-rc1~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f14f8dff9330ed51d817f190a2ee9ac76dfac00b;p=thirdparty%2Flibvirt.git qemu_process: Don't require a hugetlbfs mount for memfd The aim of qemuProcessNeedHugepagesPath() is to determine whether a hugetlbfs mount point is required for given domain (as in whether qemuBuildMemoryBackendProps() picks up memory-backend-file pointing to a hugetlbfs mount point). Well, when domain is configured to use memfd backend then that condition can never be true. Therefore, skip creating domain's private path under hugetlbfs mount points. Signed-off-by: Michal Privoznik Reviewed-by: Martin Kletzander --- diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 2d9cb5c0ca..cbfdd3bda5 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3880,8 +3880,18 @@ qemuProcessNeedHugepagesPath(virDomainDef *def, const long system_pagesize = virGetSystemPageSizeKB(); size_t i; - if (def->mem.source == VIR_DOMAIN_MEMORY_SOURCE_FILE) + switch ((virDomainMemorySource)def->mem.source) { + case VIR_DOMAIN_MEMORY_SOURCE_FILE: + /* This needs a hugetlbfs mount. */ return true; + case VIR_DOMAIN_MEMORY_SOURCE_MEMFD: + /* memfd works without a hugetlbfs mount */ + return false; + case VIR_DOMAIN_MEMORY_SOURCE_NONE: + case VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS: + case VIR_DOMAIN_MEMORY_SOURCE_LAST: + break; + } for (i = 0; i < def->mem.nhugepages; i++) { if (def->mem.hugepages[i].size != system_pagesize)