57 lines
1.2 KiB
Plaintext
57 lines
1.2 KiB
Plaintext
|
#!/bin/sh
|
||
|
# This script is not used when systemd is running
|
||
|
### BEGIN INIT INFO
|
||
|
# Provides: mdadm-waitidle
|
||
|
# Required-Start:
|
||
|
# Required-Stop:
|
||
|
# Should-Stop: halt reboot kexec
|
||
|
# X-Stop-After: umountroot
|
||
|
# Default-Start:
|
||
|
# Default-Stop: 0 6
|
||
|
# Short-Description: Wait for MD arrays to become idle
|
||
|
# Description: Waits until all MD arrays are in idle and synced state
|
||
|
# before halt/reboot.
|
||
|
### END INIT INFO
|
||
|
#
|
||
|
set -eu
|
||
|
|
||
|
MDADM=/sbin/mdadm
|
||
|
test -x "$MDADM" || exit 0
|
||
|
test -f /proc/mdstat || exit 0
|
||
|
|
||
|
. /lib/lsb/init-functions
|
||
|
|
||
|
case "${1:-}" in
|
||
|
|
||
|
start|restart|force-reload)
|
||
|
# nothing, the only reason the script is here is to stop arrays
|
||
|
;;
|
||
|
|
||
|
stop)
|
||
|
sync
|
||
|
wait=
|
||
|
for md in /sys/block/md*/md ; do
|
||
|
[ -d "$md" ] || continue
|
||
|
[ "$wait" ] || log_action_begin_msg "Waiting for MD arrays to become idle"
|
||
|
wait=y
|
||
|
[ -w $md/sync_action ] && echo idle > $md/sync_action
|
||
|
done
|
||
|
if [ "$wait" ]; then
|
||
|
# mdadm --wait-clean has a short internal timeout
|
||
|
if $MDADM --wait-clean --scan; then
|
||
|
log_action_end_msg 0
|
||
|
else
|
||
|
log_action_end_msg 1
|
||
|
sleep 1
|
||
|
fi
|
||
|
fi
|
||
|
;;
|
||
|
|
||
|
*)
|
||
|
echo "Usage: ${0:-} stop" >&2
|
||
|
exit 1;;
|
||
|
|
||
|
esac
|
||
|
|
||
|
exit 0
|