This patche add a test to cgroup_init function, which prevent to add multiple records for the same controller (this is a problem eg. in cgroup_get_cgroup function - which looks to mount table and add all relevant controllers using cgroup_add_controller function and when the function calls cgroup_add_cgroup function twice on the same controller, it returns error so the result is cgroup_get_cgroup failed).
Signed-off-by: Ivana Varekova <[email protected]> --- src/api.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/src/api.c b/src/api.c index 4f88d20..097060c 100644 --- a/src/api.c +++ b/src/api.c @@ -570,6 +570,8 @@ int cgroup_init() char subsys_name[FILENAME_MAX]; int hierarchy, num_cgroups, enabled; int i=0; + int j; + int duplicate = 0; char *mntopt = NULL; int err; char *buf = NULL; @@ -648,6 +650,22 @@ int cgroup_init() continue; cgroup_dbg("matched %s:%s\n", mntopt, controllers[i]); + + /* do not have duplicates in mount table */ + duplicate = 0; + for (j = 0; j < found_mnt; j++) { + if (strncmp(mntopt, cg_mount_table[j].name, FILENAME_MAX) + == 0) { + duplicate = 1; + break; + } + } + if (duplicate) { + cgroup_dbg("controller %s is already mounted on %s\n", + mntopt, cg_mount_table[j].path); + continue; + } + strcpy(cg_mount_table[found_mnt].name, controllers[i]); strcpy(cg_mount_table[found_mnt].path, ent->mnt_dir); cgroup_dbg("Found cgroup option %s, count %d\n", ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Libcg-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libcg-devel
