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

Reply via email to