summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Safranek <jsafrane@redhat.com>2009-12-22 09:24:25 +0100
committerJan Safranek <jsafrane@redhat.com>2009-12-22 09:24:25 +0100
commit22cffbd5d463ce21205f7539d2c099b5a81295de (patch)
tree8d6d251d9c68cc98909f4487e3a0cdfa6515bf39
parent054e8bb87a19d9a69d6c4ea509a8d2d4cb70aa01 (diff)
downloadlibcg-22cffbd5d463ce21205f7539d2c099b5a81295de.tar.gz
libcg-22cffbd5d463ce21205f7539d2c099b5a81295de.tar.xz
libcg-22cffbd5d463ce21205f7539d2c099b5a81295de.zip
Use tools instead of shell scripts
libcgroup now provides some tools, which can be used in the init script instead of bash code. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
-rw-r--r--scripts/init.d/cgconfig.in55
1 files changed, 27 insertions, 28 deletions
diff --git a/scripts/init.d/cgconfig.in b/scripts/init.d/cgconfig.in
index e11fdd7..f61a0cd 100644
--- a/scripts/init.d/cgconfig.in
+++ b/scripts/init.d/cgconfig.in
@@ -87,36 +87,35 @@ create_default_groups() {
then
defaultcgroup=sysdefault/
fi
+
#
- # Create a default class for tasks to return back to
+ # Find all mounted subsystems and create comma-separated list
+ # of controllers.
#
- 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
+ controllers=`lssubsys 2>/dev/null | tr '\n' ',' | sed s/.$//`
+
+ #
+ # Create the default group, ignore errors when the default group
+ # already exists.
+ #
+ cgcreate -g $controllers:$defaultcgroup 2>/dev/null
+
+ #
+ # special rule for cpusets
+ #
+ if echo $controllers | grep -q -w cpuset; then
+ cpus=`cgget -nv -r cpuset.cpus /`
+ cgset -r cpuset.cpus=$cpus $defaultcgroup
+ mems=`cgget -nv -r cpuset.mems /`
+ cgset -r cpuset.mems=$mems $defaultcgroup
+ fi
+
+ #
+ # Classify everything to default cgroup. Ignore errors, some processes
+ # may exit after ps is run and before cgclassify moves them.
+ #
+ cgclassify -g $controllers:$defaultcgroup `ps --no-headers -eL o tid` \
+ 2>/dev/null || :
}
start() {