]> git.pld-linux.org Git - packages/util-linux.git/blobdiff - util-linux-blockdev.init
- added systemd service for blockdev
[packages/util-linux.git] / util-linux-blockdev.init
index 28aa2d53df5d73d1b32e39b6c7346783a4dc4399..e66fd292a36baf2cedb08bd4d9aba848d614d412 100644 (file)
 #
 # chkconfig:   2345 01 99
 # description: blockdev
-#              
+#
 # processname: blockdev
-# config:      
-# pidfile:
+
+[ -f /etc/sysconfig/blockdev ] || exit 0
+
+blockdevs=$(awk -F= '!/^#/ && !/^$/ {if ($2) print $1}' /etc/sysconfig/blockdev)
+if [ -z "$blockdevs" ]; then
+       case "$1" in
+       start|stop|restart|force-reload)
+               exit 0
+               ;;
+       esac
+fi
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
-# Source blockdev configureation.
-[ -f /etc/sysconfig/blockdev ] && . /etc/sysconfig/blockdev
+# Source blockdev configuration.
+. /etc/sysconfig/blockdev
 
-RETVAL=0
-# See how we were called.
-case "$1" in
-       start)
-       # Start daemons.
-       if [ ! -f /var/lock/subsys/blockdev ]; then
-
-               for drive in $(ls /sys/block 2> /dev/null); do
-                       if [ -d "/sys/block/${drive}" ]; then
-                               eval PARAMS=\$BLOCKDEV_${drive}
-                               if [ -n "${PARAMS}" ]; then
-                                       show "Setting parameters for block drive %s (%s)" "$drive" "$PARAMS"
-                                       busy
-                                       /sbin/blockdev ${PARAMS} /dev/${drive}
-                                       ok
-                               fi
-                       fi
-               done
-               RETVAL=$?
-               [ $RETVAL -eq 0 ] && touch /var/lock/subsys/blockdev
-       else
+start() {
+       if [ -f /var/lock/subsys/blockdev ]; then
                msg_already_running blockdev
+               return
        fi
-       ;;
-       stop)
+
+       local var realdrive drive PARAMS
+       for var in $blockdevs; do
+               realdrive=
+               drive=${var#BLOCKDEV_}
+               if [ -d "/sys/block/${drive}" -a -e "/dev/${drive}" ]; then
+                       realdrive="/dev/${drive}"
+               elif [ -e "/dev/mapper/${drive}" ]; then
+                       realdrive="/dev/mapper/${drive}"
+               elif drive=$(echo $drive | tr _ -) && [ -d "/sys/block/${drive}" -a -e "/dev/${drive}" ]; then
+                       realdrive="/dev/${drive}"
+               elif [ -e "/dev/mapper/${drive}" ]; then
+                       realdrive="/dev/mapper/${drive}"
+               fi
+
+               if [ -n "$realdrive" ]; then
+                       eval PARAMS=\$$var
+                       if [ -n "${PARAMS}" ]; then
+                               show "Setting parameters for block drive %s (%s)" "$drive" "$PARAMS"
+                               busy
+                               /sbin/blockdev ${PARAMS} $realdrive
+                               ok
+                       fi
+               fi
+       done
+       # TODO: retval not really handled here
+       RETVAL=$?
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/blockdev
+}
+
+stop() {
        # Stop daemons.
        if [ ! -f /var/lock/subsys/blockdev ]; then
                msg_not_running blockdev
-       fi      
+               return
+       fi
        rm -f /var/lock/subsys/blockdev
+}
+
+status() {
+       if [ -z "$blockdevs" ]; then
+               echo "no devices configured for blockdev"
+               RETVAL=1
+               return
+       fi
+
+       echo "blockdev configured for:"
+       local var drive realdrive PARAMS
+       for var in $blockdevs; do
+               drive=${var#BLOCKDEV_}
+               echo -n "- $drive: "
+
+               realdrive=
+               if [ -d "/sys/block/${drive}" -a -e "/dev/${drive}" ]; then
+                       realdrive="/dev/${drive}"
+               elif [ -e "/dev/mapper/${drive}" ]; then
+                       realdrive="/dev/mapper/${drive}"
+               elif drive=$(echo $drive | tr _ -) && [ -d "/sys/block/${drive}" -a -e "/dev/${drive}" ]; then
+                       realdrive="/dev/${drive}"
+               elif [ -e "/dev/mapper/${drive}" ]; then
+                       realdrive="/dev/mapper/${drive}"
+               fi
+
+               eval PARAMS=\$$var
+               if [ -n "$realdrive" ]; then
+                       echo "${PARAMS}; device=$realdrive"
+               else
+                       echo "${PARAMS}; device not present"
+               fi
+       done
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
        ;;
-       restart|force-reload)
-       $0 stop
-       $0 start
-       exit $?
+  restart|force-reload)
+       stop
+       start
        ;;
-       status)
-       status blockdev
-       exit $?
+  status)
+       status
        ;;
-       #  reload)
-       #       msg_reloading blockdev
-       #       killproc blockdev -HUP
-       #       ;;
-       *)
+  *)
        msg_usage "$0 {start|stop|restart|force-reload|status}"
        exit 3
 esac
This page took 0.276512 seconds and 4 git commands to generate.