From 2f6971fe70647bf84fe55ca148561af0bc17ee2f Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sat, 20 Sep 2014 12:58:27 +0400 Subject: reformat mdadm-raid initscript a bit --- debian/changelog | 1 + debian/mdadm-raid | 285 +++++++++++++++++++++++++++--------------------------- 2 files changed, 144 insertions(+), 142 deletions(-) diff --git a/debian/changelog b/debian/changelog index f37582e6..c5fe263e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,7 @@ mdadm (3.3.2-1) UNRELEASED; urgency=low * remove references to old (2.x and 1.x) mdadm versions (Closes: #728804) * remove references to very old (pre-wheeze) breaks/replaces/depends * remove support of makedev + * reformat mdadm-raid initscript a bit -- Michael Tokarev Sat, 20 Sep 2014 08:49:59 +0400 diff --git a/debian/mdadm-raid b/debian/mdadm-raid index 0c0cad52..a50c8241 100644 --- a/debian/mdadm-raid +++ b/debian/mdadm-raid @@ -78,164 +78,165 @@ is_true() { case "${1:-}" in [Yy]es|[Yy]|1|[Tt]rue|[Tt]) return 0;; - *) return 1; + *) return 1;; esac } case "${1:-}" in + start) PREFIX="Assembling MD array" - if is_true $AUTOSTART || is_true ${MDADM_FORCE_AUTOSTART__:-0}; then - if [ ! -f /proc/mdstat ] && [ -x "$(command -v modprobe)" ] ; then - modprobe -q md 2>/dev/null || : - fi - if [ ! -f /proc/mdstat ]; then - log_problem "failed to load MD subsystem" - exit 0 - fi - - if [ -f $CONFIG ] || [ -f $ALTCONFIG ]; then - # handle devfs-style names and version-1 devices - # fail gracefully in case we're on a read-only filesystem, in which - # case it's safe to assume that the admin knows what s/he's doing. - # See (#382876). - mkdir --parent /dev/md || : - - # ugly hack because shell sucks - IFSOLD=${IFS:-} - IFS=' -' - for line in $($MDADM --assemble --scan --auto=yes --symlink=no 2>&1); do - IFS=$IFSOLD - set -- $line - shift - - case "$@" in - - 'No arrays found in config file'*) - # no point in carrying on. - shift - log_notice "no $*" - exit 0 - ;; - - 'Unknown keyword'*) - # warn only - if [ -x $(command -v logger >/dev/null) ]; then - logger -t mdadm -p syslog.warning -- "$*" - elif [ -w /dev/console ]; then - echo "mdadm: $*" > /dev/console - else - echo "mdadm: $*" >&2 - fi - ;; - - *' is already active.') - log_dev 0 $1 "already running" - ;; - - *'has been started with '[[:digit:]]*' drive'*' (out of '[[:digit:]]*') and '[[:digit:]]*' spare'*'.') - log_dev 0 $1 "initialising [$6/${10%).}]" - ;; - - *'has been started with '[[:digit:]]*' drive'*' (out of '[[:digit:]]*').') - log_dev 0 $1 "degraded [$6/${10%).}]" - ;; - - *'has been started with '[[:digit:]]*' drive'*'.') - log_dev 0 $1 "started [$6/$6]" - ;; - - *'assembled from '[[:digit:]]*' drive'*' - not enough to start the array.') - log_dev 1 $1 "not enough devices" - ;; - - 'no devices found for '*) - log_dev 1 $5 "no devices found" - ;; - - 'failed to RUN_ARRAY '*': Input/output error') - log_dev 1 ${4%:} "RUN_ARRAY input/output error" - ;; - - *) :;; - esac - done - ret=$? - - log_action_begin_msg "Generating udev events for MD arrays" - [ -d $STATEDIR ] || mkdir -p $STATEDIR - for uevent in /sys/block/md*/uevent; do - test -e $uevent || break - sentinel=${uevent#/sys/block/}; sentinel=${sentinel%/uevent}-uevent - test -e $STATEDIR/$sentinel && continue - test -w $uevent || continue - echo add > $uevent - test -d $STATEDIR && : > $STATEDIR/$sentinel - done - log_action_end_msg 0 - - [ $ret -ne 0 ] && exit $ret - - else - log_problem "no $CONFIG file" - fi - else + if ! is_true $AUTOSTART && ! is_true ${MDADM_FORCE_AUTOSTART__:-0}; then log_notice "disabled in $DEBIANCONFIG" + exit 0 fi - ;; - stop) - PREFIX="Stopping MD array" + if [ ! -f /proc/mdstat ] && [ -x "$(command -v modprobe)" ] ; then + modprobe -q md 2>/dev/null || : + fi + if [ ! -f /proc/mdstat ]; then + log_problem "failed to load MD subsystem" + exit 0 + fi - if is_true $AUTOSTART; then - if [ ! -f /proc/mdstat ]; then - log_problem "no MD subsystem loaded" - exit 0 - fi + if [ ! -f $CONFIG -a ! -f $ALTCONFIG ]; then + log_problem "no $CONFIG file" + exit 0 + fi + + # handle devfs-style names and version-1 devices + # fail gracefully in case we're on a read-only filesystem, in which + # case it's safe to assume that the admin knows what s/he's doing. + # See (#382876). + mkdir --parent /dev/md || : - # ugly hack because shell sucks - IFSOLD=${IFS:-} - IFS=' + # ugly hack because shell sucks + IFSOLD=${IFS:-} + IFS=' ' - set +e - for line in $($MDADM --stop --scan 2>&1); do - set -e - IFS=$IFSOLD - set -- $line - shift - - case "$@" in - - 'Unknown keyword'*) - # warn only - if [ -x $(command -v logger >/dev/null) ]; then - logger -t mdadm -p syslog.warning -- "$*" - elif [ -w /dev/console ]; then - echo "mdadm: $*" > /dev/console - else - echo "mdadm: $*" >&2 - fi - ;; - - 'stopped '*) - log_dev 0 $2 stopped - ;; - - 'fail to stop array '*': Device or resource busy') - log_dev 1 ${5%:} busy - ;; - - *) :;; - esac - done || exit $? - - rm -f $STATEDIR/md*-uevent + for line in $($MDADM --assemble --scan --auto=yes --symlink=no 2>&1); do + IFS=$IFSOLD + set -- $line + shift - else + case "$@" in + + 'No arrays found in config file'*) + # no point in carrying on. + shift + log_notice "no $*" + exit 0 + ;; + + 'Unknown keyword'*) + # warn only + if [ -x $(command -v logger >/dev/null) ]; then + logger -t mdadm -p syslog.warning -- "$*" + elif [ -w /dev/console ]; then + echo "mdadm: $*" > /dev/console + else + echo "mdadm: $*" >&2 + fi + ;; + + *' is already active.') + log_dev 0 $1 "already running" + ;; + + *'has been started with '[[:digit:]]*' drive'*' (out of '[[:digit:]]*') and '[[:digit:]]*' spare'*'.') + log_dev 0 $1 "initialising [$6/${10%).}]" + ;; + + *'has been started with '[[:digit:]]*' drive'*' (out of '[[:digit:]]*').') + log_dev 0 $1 "degraded [$6/${10%).}]" + ;; + + *'has been started with '[[:digit:]]*' drive'*'.') + log_dev 0 $1 "started [$6/$6]" + ;; + + *'assembled from '[[:digit:]]*' drive'*' - not enough to start the array.') + log_dev 1 $1 "not enough devices" + ;; + + 'no devices found for '*) + log_dev 1 $5 "no devices found" + ;; + + 'failed to RUN_ARRAY '*': Input/output error') + log_dev 1 ${4%:} "RUN_ARRAY input/output error" + ;; + + *) :;; + esac + done + ret=$? + + log_action_begin_msg "Generating udev events for MD arrays" + [ -d $STATEDIR ] || mkdir -p $STATEDIR + for uevent in /sys/block/md*/uevent; do + test -e $uevent || break + sentinel=${uevent#/sys/block/}; sentinel=${sentinel%/uevent}-uevent + test -e $STATEDIR/$sentinel && continue + test -w $uevent || continue + echo add > $uevent + test -d $STATEDIR && : > $STATEDIR/$sentinel + done + log_action_end_msg 0 + + exit $ret + ;; + + stop) + PREFIX="Stopping MD array" + + if ! is_true $AUTOSTART; then log_notice "disabled in $DEBIANCONFIG" + exit 0 fi + + if [ ! -f /proc/mdstat ]; then + log_problem "no MD subsystem loaded" + exit 0 + fi + + # ugly hack because shell sucks + IFSOLD=${IFS:-} + IFS=' +' + set +e + for line in $($MDADM --stop --scan 2>&1); do + set -e + IFS=$IFSOLD + set -- $line + shift + case "$@" in + + 'Unknown keyword'*) + # warn only + if [ -x $(command -v logger >/dev/null) ]; then + logger -t mdadm -p syslog.warning -- "$*" + elif [ -w /dev/console ]; then + echo "mdadm: $*" > /dev/console + else + echo "mdadm: $*" >&2 + fi + ;; + + 'stopped '*) + log_dev 0 $2 stopped + ;; + + 'fail to stop array '*': Device or resource busy') + log_dev 1 ${5%:} busy + ;; + + *) :;; + esac + done || exit $? + + rm -f $STATEDIR/md*-uevent ;; restart|force-reload) -- cgit v1.2.3