Add support for vdevmap in the configuration.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 18 Jan 2007 16:35:03 +0000 (16:35 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 18 Jan 2007 16:35:03 +0000 (16:35 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2460 94cd875c-1c1d-0410-91d2-eb244daf1a30

scripts/util-vserver-vars.pathsubst
scripts/vserver.functions
sysv/util-vserver

index 8c1e4c2..956c93c 100644 (file)
@@ -73,6 +73,7 @@ _VAPT_GET="$__SBINDIR/vapt-get"
 _VAPT_GET_WORKER="$__PKGLIBDIR/vapt-get-worker"
 _VATTRIBUTE="$__SBINDIR/vattribute"
 _VCONTEXT="$__SBINDIR/vcontext"
+_VDEVMAP="$__SBINDIR/vdevmap"
 _VDLIMIT="$__SBINDIR/vdlimit"
 _VDU="$__SBINDIR/vdu"
 _VHASHIFY="$__PKGLIBDIR/vhashify"
index ba07f33..b0bf171 100644 (file)
@@ -1226,3 +1226,28 @@ function _namespaceCleanup
     done
 }
 
+function loadDeviceMap
+{
+    local xid="$1"
+    local dir="$2"
+    local flags device target
+
+    test -d "$dir" || return 0
+
+    for i in "$dir"/*; do
+       test -d "$i" || continue
+
+       local -a vdevmap_opts=()
+       test -e "$i/create" && vdevmap_opts=( "${vdevmap_opts[@]}" --create )
+       test -e "$i/open"   && vdevmap_opts=( "${vdevmap_opts[@]}" --open )
+       test -e "$i/remap"  && vdevmap_opts=( "${vdevmap_opts[@]}" --remap )
+
+       getFileValue flags "$i/flags" || :
+       getFileValue device "$i/device" || :
+       getFileValue target "$i/target" || :
+       vdevmap_opts=(  "${vdevmap_opts[@]}" ${flags:+--flags "$flags"} \
+                       ${device:+--device "$device"} ${target:+--target "$target"} )
+
+       $_VDEVMAP --xid "$xid" "${vdevmap_opts[@]}" || return $?
+    done
+}
index 5768524..84636ba 100755 (executable)
@@ -14,6 +14,8 @@ test -e "$UTIL_VSERVER_VARS" || {
 
 LOCKFILE=util-vserver
 . "$_LIB_VSERVER_INIT_FUNCTIONS"
+. "$_LIB_FUNCTIONS"
+. "$__PKGLIBDIR/vserver.functions"
 
 
 function set_helper()
@@ -51,6 +53,9 @@ function start()
     set_helper
     _endResult $?
     local retval=$?
+    _beginResult $"Loading default device map"
+    loadDeviceMap 0 "$__CONFDIR/.defaults/apps/vdevmap"
+    _endResult $?
     test "$retval" -ne 0 || touch "$lockfile"
     return $retval
 }
@@ -61,11 +66,12 @@ function stop()
     _beginResult $"Stopping all running guests"
     $_START_VSERVERS -j 1 --all --stop
     _endResult $?
-    local retval=$?
     _beginResult $"Killing all running contexts"
     kill_contexts
     _endResult $?
+    local retval=$?
     $_RM -f "$lockfile"
+    return $retval
 }
 
 function restart()