]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
libcgroup: Add default group to cgconfig
authorDhaval Giani <dhaval@linux.vnet.ibm.com>
Tue, 16 Dec 2008 17:14:33 +0000 (17:14 +0000)
committerDhaval Giani <dhaval@linux.vnet.ibm.com>
Tue, 16 Dec 2008 17:14:33 +0000 (17:14 +0000)
From: Balbir Singh <balbir@linux.vnet.ibm.com>

As discussed in the previous thread
http://article.gmane.org/gmane.comp.lib.libcg.devel/139, we don't have
the concept of default groups and tasks should be able to return back
to their default group when done.

Here is a fix to the cgconfig script to fix the issue. Please review,
comment on it.

Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com>
Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@236 4f4bb910-9a46-0410-90c8-c897d4f1cd53

scripts/init.d/cgconfig

index 4e04fb98fc669a5537308d002a9aed4bec0ba09b..58dee656c389b679ab30066a1b2e1b5cd5bd05b8 100644 (file)
@@ -82,6 +82,56 @@ start() {
                 #log_progress_msg "Starting cgconfig service: "
                 cgconfigparser -l $CONFIG_FILE
         fi
+
+        declare defaultcgroup
+
+        if [ -f /etc/cgrules.conf ]
+        then
+            read user ctrl defaultcgroup <<< \
+                `grep -m1 ^\* /etc/cgrules.conf`
+            if [[ -n $defaultcgroup && $defaultcgroup = "*" ]]
+            then
+                log_warning_msg "/etc/cgrules.conf incorrect"
+                log_warning_msg "Overriding it"
+                defaultcgroup=
+            fi
+        fi
+
+        if [ -z $defaultcgroup ]
+        then
+            defaultcgroup=sysdefault/
+        fi
+        #
+        # Create a default class for tasks to return back to
+        #
+        parse_mounts
+        for i in `seq 1 $maxindex`
+        do
+            #
+            # Ignore if directory already exists
+            #
+            mkdir ${MOUNTPOINT[$i]}/$defaultcgroup 2> /dev/null
+            chmod a+rw ${MOUNTPOINT[$i]}/$defaultcgroup/tasks
+            #
+            # special rule for cpusets
+            #
+            echo ${MOUNTOPTS[$i]} | grep -q -w cpuset
+            if [ $? -eq 0 ]
+            then
+                cat ${MOUNTPOINT[$i]}/cpuset.cpus > \
+                    ${MOUNTPOINT[$i]}/$defaultcgroup/cpuset.cpus
+                cat ${MOUNTPOINT[$i]}/cpuset.mems > \
+                    ${MOUNTPOINT[$i]}/$defaultcgroup/cpuset.mems
+            fi
+            #
+            # classify everything to default cgroup
+            #
+            for j in `ps --no-headers -eL o tid`
+            do
+                echo $j > ${MOUNTPOINT[$i]}/$defaultcgroup/tasks 2>/dev/null
+            done
+        done
+       
         [ $? == 0 ] && touch /var/lock/subsys/$servicename
         return $?
 }