controllers/cgroup_fj: fix and clean up
PATCH v4 1/1 controllers/cgroup_fj: fix and clean up
Many tests were failing on recent kernels because it is not possible to mount cgroup several times anymore. Now the test first checks if the cgroup exists. The cgroup will be mounted (and umounted) only if it doesn't exist at the start of the test.
It also checks that the subsystem exist before we run the tests.
A few minor typo mistakes were fixed (expectted instead of expected).
Most of the tests are now passing.
--- .../controllers/cgroup_fj/cgroup_fj_function.sh | 37 +++++------ .../controllers/cgroup_fj/cgroup_fj_stress.sh | 42 ++++++------ .../controllers/cgroup_fj/cgroup_fj_utility.sh | 76 ++++++++++++++-------- 3 files changed, 90 insertions(+), 65 deletions(-)
testcases/kernel/controllers/cgroup_fj/cgroup_fj_function.sh +18 -19
@@ -37,6 +37,7 @@ noprefix_use_str=""; release_agent_para_str=""; notify_on_release_str=""; release_agent_str=""; +mounted=1; expected=1;
@@ -139,8 +140,6 @@ if [ $? -ne 0 ]; then fi setup; -mount_cgroup; - $TESTROOT/cgroup_fj_proc & pid=$!
@@ -148,15 +147,15 @@ mkdir_subgroup; # cpuset.cpus and cpuset.mems should be specified with suitable value # before attaching operation if subsystem is cpuset -if [ "$subsystem" == "cpuset" ] || [ "$subsystem" == "all" ] || [ $subsystem == "none" ] ; then +if [ "$subsystem" == "cpuset" ] || [ "$subsystem" == "all" ] || [ "$subsystem" == "none" ] ; then exist=`grep -w cpuset /proc/cgroups | cut -f1`; if [ "$exist" != "" ]; then if [ "$noprefix_use" == "no" ]; then - do_echo 1 1 `cat /dev/cgroup/cpus` /dev/cgroup/subgroup_1/cpus; - do_echo 1 1 `cat /dev/cgroup/mems` /dev/cgroup/subgroup_1/mems; + do_echo 1 1 `cat $mount_point/cpus` $mount_point/subgroup_1/cpus; + do_echo 1 1 `cat $mount_point/mems` $mount_point/subgroup_1/mems; else - do_echo 1 1 `cat /dev/cgroup/cpuset.cpus` /dev/cgroup/subgroup_1/cpuset.cpus; - do_echo 1 1 `cat /dev/cgroup/cpuset.mems` /dev/cgroup/subgroup_1/cpuset.mems; + do_echo 1 1 `cat $mount_point/cpuset.cpus` $mount_point/subgroup_1/cpuset.cpus; + do_echo 1 1 `cat $mount_point/cpuset.mems` $mount_point/subgroup_1/cpuset.mems; fi fi fi
@@ -166,12 +165,12 @@ case $attach_operation in "1" ) ;; "2" ) - do_echo 1 1 $pid /dev/cgroup/subgroup_1/tasks; + do_echo 1 1 $pid $mount_point/subgroup_1/tasks; ;; "3" ) $TESTROOT/cgroup_fj_proc & pid2=$! - cat /dev/cgroup/tasks > $TMPFILE + cat $mount_point/tasks > $TMPFILE nlines=`cat $TMPFILE | wc -l` for i in `seq 1 $nlines` do
@@ -190,12 +189,12 @@ case $attach_operation in continue fi fi - do_echo 1 1 "$cur_pid" /dev/cgroup/subgroup_1/tasks + do_echo 1 1 "$cur_pid" $mount_point/subgroup_1/tasks fi done ;; "4" ) - do_echo 1 1 $pid /dev/cgroup/subgroup_1/tasks; + do_echo 1 1 $pid $mount_point/subgroup_1/tasks; sleep 1 do_kill 1 1 10 $pid ;;
@@ -214,18 +213,18 @@ esac #if [ $notify_on_release -ne 0 ] && [ $notify_on_release -ne 1 ] && [ $notify_on_release -ne 2 ];then # expected=0 #fi -do_echo 1 $expected $notify_on_release_str /dev/cgroup/subgroup_1/notify_on_release; +do_echo 1 $expected $notify_on_release_str $mount_point/subgroup_1/notify_on_release; # echo release_agent that analysed from parameter if [ $release_agent_echo -ne 1 ]; then - do_echo 1 1 $release_agent_str /dev/cgroup/release_agent; + do_echo 1 1 $release_agent_str $mount_point/release_agent; fi sleep 1 # pid could not be echoed from subgroup if subsystem is ( or include ) ns, # so we kill them here -if [ "$subsystem" == "ns" ] || [ "$subsystem" == "all" ] || [ $subsystem == "none" ] ; then +if [ "$subsystem" == "ns" ] || [ "$subsystem" == "all" ] || [ "$subsystem" == "none" ] ; then do_kill 1 1 9 $pid do_kill 1 1 9 $pid2 # removing operation
@@ -234,20 +233,20 @@ else "1" ) ;; "2" ) - do_echo 1 1 $pid /dev/cgroup/tasks + do_echo 1 1 $pid $mount_point/tasks if [ $pid2 -ne 0 ] ; then - do_echo 1 1 $pid2 /dev/cgroup/tasks + do_echo 1 1 $pid2 $mount_point/tasks fi ;; "3" ) - cat /dev/cgroup/subgroup_1/tasks > $TMPFILE + cat $mount_point/subgroup_1/tasks > $TMPFILE nlines=`cat $TMPFILE | wc -l` if [ $nlines -ne 0 ]; then for i in `seq 1 $nlines` do cur_pid=`sed -n "$i""p" $TMPFILE` if [ -e /proc/$cur_pid/ ];then - do_echo 1 1 "$cur_pid" /dev/cgroup/tasks + do_echo 1 1 "$cur_pid" $mount_point/tasks fi done fi
@@ -264,7 +263,7 @@ fi sleep 1 -do_rmdir 0 1 /dev/cgroup/subgroup_* +do_rmdir 0 1 $mount_point/subgroup_* cleanup; do_kill 1 1 9 $pid
testcases/kernel/controllers/cgroup_fj/cgroup_fj_stress.sh +23 -19
118 lines not on this page · raw message
testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh +49 -27
172 lines not on this page · raw message
Signature · 1 line
2.1.4
PATCH v4 1/1 controllers/cgroup_fj: fix and clean up
Hi!
testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh do_kill() · line 461
Quoted 7 lines
setup()
{testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh +4
-1- if [ -e /dev/cgroup ]; then + # Current test will fail if the previous one failed to rmdir + # so try to remove all subgroups + mount_point=$(get_mount_point) + rmdir $mount_point/subgroup_*
I've removed this rmdir now, since if cgroups are not mounted it will expand to rmdir /subgroup_* which is mostly harmless but will generate confusing error in the output.
testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh do_kill() · line 463
Quoted 1 line
testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh +1
-0+ if [ "$mount_point" == "" ] ; then
^
Removed this space
testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh do_kill() · line 470
Quoted 7 lines
testcases/kernel/controllers/cgroup_fj/cgroup_fj_utility.sh +6
-0+ mounted=0 + mount_point=/dev/cgroup + fi + + if [ -e $mount_point ] && [ $mounted -ne 1 ]; then + rm -rf $mount_point cleanup;
^
This useless semicolon
And pushed, thanks.
Signature · 2 lines
Cyril Hrubis [email protected]