Hi, On Fri, 1 Dec 2023 13:27:58 +0100 tito <[email protected]> wrote:
> Hi, > but the file is still referenced in /etc/init.d/mdadm > > # grep /etc/default/mdadm /etc/init.d/mdadm* > /etc/init.d/mdadm:DEBIANCONFIG=/etc/default/mdadm > > from the 5 variables set in /etc/default/mdadm: > > AUTOCHECK, AUTOSCAN, VERBOSE at a first glance are ignored > > START_DAEMON has already been moved to the initscript > so that from the /etc/default/mdadm you can only turn > the initscript off. > > I would propose to move DAEMON_OPTIONS="--syslog" > to the initscript so that we can forget about > /etc/default/mdadm. I'm attaching the amended patch so that the script works without /etc/default/mdadm, but it still includes the file if it's there > > The cronjob that will be removed soon is still a problem as it checks > the arrays periodically I'm not saying that it's not a problem, but I think it's a separate bug. Also, before doing any attempts on this, Matthew has to say if he's ok with maintaining cronjobs in this package and if yes, how this should be done. Best, Lorenzo
From f748a8eb84b3331a7c0b71aa255064ab6810be02 Mon Sep 17 00:00:00 2001 From: Lorenzo Puliti <[email protected]> Date: Fri, 1 Dec 2023 02:19:27 +0100 Subject: [PATCH] Add mdadm and mdadm-waitidle scripts Add scripts dropped from mdadm 4.2+20230227-1 on 28 Feb 2023 The script is changed so that it no longer needs /etc/default/mdadm Closes: #1055645 --- debian/copyright | 8 +++ lib/mapping | 2 + scripts/mdadm | 101 +++++++++++++++++++++++++++++++++ scripts/mdadm-waitidle | 60 ++++++++++++++++++++ scripts/mdadm-waitidle.md5sums | 1 + scripts/mdadm.md5sums | 1 + 6 files changed, 173 insertions(+) create mode 100755 scripts/mdadm create mode 100755 scripts/mdadm-waitidle create mode 100644 scripts/mdadm-waitidle.md5sums create mode 100644 scripts/mdadm.md5sums diff --git a/debian/copyright b/debian/copyright index 905292d..6746261 100644 --- a/debian/copyright +++ b/debian/copyright @@ -37,6 +37,14 @@ Copyright: 1997-2002, Remco Treffkorn License: BSD-3-clause Comment: Salsa debian-gps-team/pkg-gpsd 026301b71 +Files: scripts/mdadm* +Copyright: 2001-2005 Mario Jou/3en <[email protected]> + 2005-2008 Martin F. Krafft <[email protected]> + 2018 Dimitri John Ledkov <[email protected]> + 2019 Felix Lechner <[email protected]> +License: GPL-2+ +Comment: Salsa debian/mdadm 140efd48 + Files: scripts/network-manager Copyright: 2004 - 2016 Red Hat, Inc. 2005 - 2009 Novell, Inc. diff --git a/lib/mapping b/lib/mapping index c1b867d..c0cf8cb 100644 --- a/lib/mapping +++ b/lib/mapping @@ -9,6 +9,8 @@ dirsrv.service dirsrv dnscrypt-proxy.service dnscrypt-proxy firewalld.service firewalld gpsd.service gpsd +mdadm-waitidle.service mdadm-waitidle +mdadm.service mdadm nftables.service nftables pdns.service pdns rsyslog.service rsyslog diff --git a/scripts/mdadm b/scripts/mdadm new file mode 100755 index 0000000..e98f74f --- /dev/null +++ b/scripts/mdadm @@ -0,0 +1,101 @@ +#!/bin/sh +# +# Start the MD monitor daemon for all active MD arrays if desired. +# This script is not used under systemd. +# +# Copyright © 2001-2005 Mario Jou/3en <[email protected]> +# Copyright © 2005-2009 Martin F. Krafft <[email protected]> +# Distributable under the terms of the GNU GPL version 2. +# +### BEGIN INIT INFO +# Provides: mdadm +# Required-Start: $local_fs $syslog +# Required-Stop: $local_fs $syslog sendsigs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: MD monitoring daemon +# Description: mdadm provides a monitor mode, in which it will scan for +# problems with the MD devices. If a problem is found, the +# administrator is alerted via email, or a custom script is +# run. +### END INIT INFO +# +set -eu + +MDADM=/sbin/mdadm +MDMON=/sbin/mdmon +RUNDIR=/run/mdadm +PIDFILE=$RUNDIR/monitor.pid +DEBIANCONFIG=/etc/default/mdadm +DAEMON_OPTIONS="--syslog" + +test -x "$MDADM" || exit 0 + +test -f /proc/mdstat || exit 0 + +START_DAEMON=true +test -f $DEBIANCONFIG && . $DEBIANCONFIG + +. /lib/lsb/init-functions + +is_true() +{ + case "${1:-}" in + [Yy]es|[Yy]|1|[Tt]|[Tt]rue) return 0;; + *) return 1; + esac +} + +case "${1:-}" in + start) + if [ -x /usr/bin/systemd-detect-virt ] && /usr/bin/systemd-detect-virt --quiet --container; then + log_daemon_msg "Not starting MD monitoring service in container" + log_end_msg 0 + exit 0 + fi + + if is_true $START_DAEMON; then + log_daemon_msg "Starting MD monitoring service" "mdadm --monitor" + mkdir -p $RUNDIR + set +e + start-stop-daemon -S -p $PIDFILE -x $MDADM -- \ + --monitor --pid-file $PIDFILE --daemonise --scan ${DAEMON_OPTIONS:-} + log_end_msg $? + set -e + fi + if [ "$(echo $RUNDIR/md[0-9]*.pid)" != "$RUNDIR/md[0-9]*.pid" ]; then + log_daemon_msg "Restarting MD external metadata monitor" "mdmon --takeover --all" + set +e + $MDMON --takeover --all + log_end_msg $? + set -e + fi + ;; + stop) + if [ -f $PIDFILE ] ; then + log_daemon_msg "Stopping MD monitoring service" "mdadm --monitor" + set +e + start-stop-daemon -K -p $PIDFILE -x $MDADM + rm -f $PIDFILE + log_end_msg $? + set -e + fi + for file in $RUNDIR/md[0-9]*.pid ; do + [ ! -f "$file" ] && continue + ln -sf $file /run/sendsigs.omit.d/mdmon-${file##*/} + done + ;; + status) + status_of_proc -p $PIDFILE "$MDADM" "mdadm" && exit 0 || exit $? + ;; + restart|reload|force-reload) + ${0:-} stop + ${0:-} start + ;; + *) + echo "Usage: ${0:-} {start|stop|status|restart|reload|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/scripts/mdadm-waitidle b/scripts/mdadm-waitidle new file mode 100755 index 0000000..b986f1e --- /dev/null +++ b/scripts/mdadm-waitidle @@ -0,0 +1,60 @@ +#!/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 + ;; + + status) + status_of_proc /usr/bin/$NAME $NAME + ;; + + *) + echo "Usage: ${0:-} stop" >&2 + exit 1;; + +esac + +exit 0 diff --git a/scripts/mdadm-waitidle.md5sums b/scripts/mdadm-waitidle.md5sums new file mode 100644 index 0000000..dc2734a --- /dev/null +++ b/scripts/mdadm-waitidle.md5sums @@ -0,0 +1 @@ +0d575d4210d6927d4f674ec7c2abbd30 unstable_0.16 diff --git a/scripts/mdadm.md5sums b/scripts/mdadm.md5sums new file mode 100644 index 0000000..ce97321 --- /dev/null +++ b/scripts/mdadm.md5sums @@ -0,0 +1 @@ +3f6d8d0d2a1a2f9d973b895e47e86a15 unstable_0.16 -- 2.40.1

