]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virfile: Introduce and use virFileGetDefaultHugepage
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 29 Mar 2019 15:10:09 +0000 (16:10 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Wed, 3 Apr 2019 14:37:19 +0000 (16:37 +0200)
This helper returns the default hugetlbfs mount point from given
array of mount points.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/libvirt_private.syms
src/qemu/qemu_conf.c
src/util/virfile.c
src/util/virfile.h

index 23cbd27ce14ea49be4cebd49da06b6316b4c636d..1f637bebd700eb9a97999a36cf3bf0b8935168ca 100644 (file)
@@ -1864,6 +1864,7 @@ virFileFindResourceFull;
 virFileFlock;
 virFileFreeACLs;
 virFileGetACLs;
+virFileGetDefaultHugepage;
 virFileGetHugepageSize;
 virFileGetMountReverseSubtree;
 virFileGetMountSubtree;
index 42122dcd97da11d914da941189fbce453e8b5dd1..41ce0a978dd3c36593e32b8fd3c8b54de56e67f3 100644 (file)
@@ -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);
 }
 
 
index ec8d85929c3b6be851aa9f79b6c9009eb7f740b7..9f1a965acb415653f86ac172dcd1b3fb3d08b59c 100644 (file)
@@ -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,
index 3dedb7666a3d6a18e37afb22e9cb4e850ff2a395..df35a32bccaf92baf741ae7e27a18d303597d2ad 100644 (file)
@@ -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);