From: Michal Privoznik Date: Fri, 29 Mar 2019 15:10:09 +0000 (+0100) Subject: virfile: Introduce and use virFileGetDefaultHugepage X-Git-Tag: v5.3.0-rc1~261 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=465df4771a0b18ca7e52802a487ce0a24fa4d18a;p=thirdparty%2Flibvirt.git virfile: Introduce and use virFileGetDefaultHugepage This helper returns the default hugetlbfs mount point from given array of mount points. Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 23cbd27ce1..1f637bebd7 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1864,6 +1864,7 @@ virFileFindResourceFull; virFileFlock; virFileFreeACLs; virFileGetACLs; +virFileGetDefaultHugepage; virFileGetHugepageSize; virFileGetMountReverseSubtree; virFileGetMountSubtree; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 42122dcd97..41ce0a978d 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1914,16 +1914,12 @@ qemuGetDomainDefaultHugepath(const virDomainDef *def, virHugeTLBFSPtr hugetlbfs, size_t nhugetlbfs) { - size_t i; - - for (i = 0; i < nhugetlbfs; i++) - if (hugetlbfs[i].deflt) - break; + virHugeTLBFSPtr p; - if (i == nhugetlbfs) - i = 0; + if (!(p = virFileGetDefaultHugepage(hugetlbfs, nhugetlbfs))) + p = &hugetlbfs[0]; - return qemuGetDomainHugepagePath(def, &hugetlbfs[i]); + return qemuGetDomainHugepagePath(def, p); } diff --git a/src/util/virfile.c b/src/util/virfile.c index ec8d85929c..9f1a965acb 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -3735,6 +3735,31 @@ virFileFindHugeTLBFS(virHugeTLBFSPtr *ret_fs ATTRIBUTE_UNUSED, } #endif /* defined __linux__ */ +/** + * virFileGetDefaultHugepage: + * @fs: array of hugetlbfs mount points + * @nfs: number of items in @fs + * + * In the passed array of hugetlbfs mount points @fs find the + * default one. It's the one which has no '-o pagesize'. + * + * Returns: default hugepage, or + * NULL if none found + */ +virHugeTLBFSPtr +virFileGetDefaultHugepage(virHugeTLBFSPtr fs, + size_t nfs) +{ + size_t i; + + for (i = 0; i < nfs; i++) { + if (fs[i].deflt) + return &fs[i]; + } + + return NULL; +} + int virFileIsSharedFS(const char *path) { return virFileIsSharedFSType(path, diff --git a/src/util/virfile.h b/src/util/virfile.h index 3dedb7666a..df35a32bcc 100644 --- a/src/util/virfile.h +++ b/src/util/virfile.h @@ -334,6 +334,9 @@ int virFileGetHugepageSize(const char *path, int virFileFindHugeTLBFS(virHugeTLBFSPtr *ret_fs, size_t *ret_nfs); +virHugeTLBFSPtr virFileGetDefaultHugepage(virHugeTLBFSPtr fs, + size_t nfs); + int virFileSetupDev(const char *path, const char *mount_options);