]> git.proxmox.com Git - mirror_lxcfs.git/blobdiff - src/bindings.c
make meminfo and swaps cgroupv2 aware
[mirror_lxcfs.git] / src / bindings.c
index eb62ddbdbc656686aec33735056a4b131bd45c69..e417a13a3558bf795f6c1096c2546b897feea1dd 100644 (file)
@@ -44,6 +44,7 @@ static bool can_use_pidfd;
 static bool can_use_swap;
 static bool can_use_sys_cpu;
 static bool has_versioned_opts;
+static bool memory_is_cgroupv2;
 
 static volatile sig_atomic_t reload_successful;
 
@@ -67,6 +68,11 @@ bool liblxcfs_has_versioned_opts(void)
        return has_versioned_opts;
 }
 
+bool liblxcfs_memory_is_cgroupv2(void)
+{
+       return memory_is_cgroupv2;
+}
+
 /* Define pivot_root() if missing from the C library */
 #ifndef HAVE_PIVOT_ROOT
 static int pivot_root(const char *new_root, const char *put_old)
@@ -837,6 +843,7 @@ static void __attribute__((constructor)) lxcfs_init(void)
                                  pidfd = -EBADF;
        int i = 0;
        pid_t pid;
+       struct hierarchy *hierarchy;
 
        lxcfs_info("Running constructor %s to reload liblxcfs", __func__);
 
@@ -894,6 +901,9 @@ static void __attribute__((constructor)) lxcfs_init(void)
        else
                lxcfs_info("Kernel does not support swap accounting");
 
+       hierarchy = cgroup_ops->get_hierarchy(cgroup_ops, "memory");
+       memory_is_cgroupv2 = hierarchy && is_unified_hierarchy(hierarchy);
+
        lxcfs_info("api_extensions:");
        for (size_t nr = 0; nr < nr_api_extensions; nr++)
                lxcfs_info("- %s", api_extensions[nr]);