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();