@cryptotaxi247 / netdata-1 / commits / 98d3f9ff0

cgroups: have the settings in relative paths

Costa Tsaousis committed Apr 30, 2016 at 02:46 UTC 98d3f9ff03a8120cfd3a4a7bdd6bbdaaf1ef7a56
1 file changed +7 -6
src/sys_fs_cgroup.c
+7 -6
@@ -732,7 +732,7 @@ struct cgroup *cgroup_find(const char *id) {
732 // detect running cgroups
733
734 // callback for find_file_in_subdirs()
735 -void found_dir_in_subdir(const char *dir) {
735 +void found_subdir_in_dir(const char *dir) {
736 debug(D_CGROUP, "examining cgroup dir '%s'", dir);
737
738 struct cgroup *cg = cgroup_find(dir);
@@ -761,11 +761,12 @@ void find_dir_in_subdirs(const char *base, const char *this, void (*callback)(co
761 int enabled = -1;
762 if(!this) this = base;
763 size_t dirlen = strlen(this), baselen = strlen(base);
764 + const char *relative_path = &this[baselen];
765
766 DIR *dir = opendir(this);
767 if(!dir) return;
768
768 - callback(&this[baselen]);
769 + callback(relative_path);
770
771 struct dirent *de = NULL;
772 while((de = readdir(dir))) {
@@ -784,7 +785,7 @@ void find_dir_in_subdirs(const char *base, const char *this, void (*callback)(co
785 // so that the config will not have settings
786 // for leaf directories
787 char option[FILENAME_MAX + 1];
787 - snprintf(option, FILENAME_MAX, "search for cgroups under %s", (this == base)?"/":this);
788 + snprintf(option, FILENAME_MAX, "search for cgroups under %s", (*relative_path == '\0')?"/":relative_path);
789
790 int def = 1;
791 if(!strcmp(this, "system.slice") ||
@@ -852,13 +853,13 @@ void find_all_cgroups() {
853 mark_all_cgroups_as_not_available();
854
855 if(cgroup_enable_cpuacct_stat || cgroup_enable_cpuacct_usage)
855 - find_dir_in_subdirs(cgroup_cpuacct_base, NULL, found_dir_in_subdir);
856 + find_dir_in_subdirs(cgroup_cpuacct_base, NULL, found_subdir_in_dir);
857
858 if(cgroup_enable_blkio)
858 - find_dir_in_subdirs(cgroup_blkio_base, NULL, found_dir_in_subdir);
859 + find_dir_in_subdirs(cgroup_blkio_base, NULL, found_subdir_in_dir);
860
861 if(cgroup_enable_memory)
861 - find_dir_in_subdirs(cgroup_memory_base, NULL, found_dir_in_subdir);
862 + find_dir_in_subdirs(cgroup_memory_base, NULL, found_subdir_in_dir);
863
864 // remove any non-existing cgroups
865 cleanup_all_cgroups();