umount them all
[util-vserver.git] / sysv / util-vserver
index 84128c3..8cc173f 100755 (executable)
@@ -43,7 +43,7 @@ function kill_contexts()
 {
     local xid
     for xid in `ls -1 /proc/virtual 2>/dev/null`; do
-       test "$xid" = "info" -o "$xid" = "status" && continue
+       [ "$xid" = "info" -o "$xid" = "status" ] && continue
        $_VATTRIBUTE --xid $xid --set --flag ~persistent
        $_VKILL --xid $xid -s 15
        sleep 3
@@ -51,7 +51,7 @@ function kill_contexts()
     done
     local alive=0
     for xid in `ls -1 /proc/virtual 2>/dev/null`; do
-       test "$xid" = "info" -o "$xid" = "status" && continue
+       [ "$xid" = "info" -o "$xid" = "status" ] && continue
        let alive+=1
     done
     test $alive = 0
@@ -67,14 +67,31 @@ function mount_cgroup()
     _generateCgroupOptions
     test -n "$CGROUP_MNT" || return 0
     $_MKDIR -p "$CGROUP_MNT"
-    $_MOUNT -t cgroup -o "$CGROUP_SUBSYS" vserver "$CGROUP_MNT"
+    if test -n "$CGROUP_MNT_PER_SS"; then
+       for ss in "${CGROUP_SUBSYS[@]}"; do
+           $_MKDIR -p "$CGROUP_MNT/$ss"
+           $_MOUNT -t cgroup -o "$ss" vserver "$CGROUP_MNT/$ss"
+       done
+    else
+       oIFS="$IFS"
+       IFS=,
+       ss="${CGROUP_SUBSYS[*]}"
+       IFS="$oIFS"
+       $_MOUNT -t cgroup -o "$ss" vserver "$CGROUP_MNT"
+    fi
 }
 
 function umount_cgroup()
 {
     _generateCgroupOptions
     test -n "$CGROUP_MNT" || return 0
-    $_UMOUNT "$CGROUP_MNT"
+    if test -n "$CGROUP_MNT_PER_SS"; then
+       for ss in "${CGROUP_SUBSYS[@]}"; do
+           $_UMOUNT "$CGROUP_MNT/$ss"
+       done
+    else
+       $_UMOUNT "$CGROUP_MNT"
+    fi
 }
 
 function start()