Control: tags -1 patch

Hello Matthew,

attached is a git patch that adds mdadm and mdadm-waitidle
scripts.

On Thu, 9 Nov 2023 16:09:22 +0100
Stephan Seitz <[email protected]> wrote:

> [...]

>   * Removing cron jobs in favour of systemd timers:
>     - daily checks also work if system is not always on (Closes:
> #889978).
I thought that anacron could handle this..

> 
> Even the cronjob is gone.

sorry, the patch does not include cronjob since o-s-s does not have
a way to handle it.
By the way I don't remember a project consensus for dropping
cronjobs in favour of timers..

Best Regards,
Lorenzo

From e5179d055f6958638b0319bba25562b3e6b77f5e 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
---
 debian/copyright               |   8 +++
 lib/mapping                    |   2 +
 scripts/mdadm                  | 100 +++++++++++++++++++++++++++++++++
 scripts/mdadm-waitidle         |  60 ++++++++++++++++++++
 scripts/mdadm-waitidle.md5sums |   1 +
 scripts/mdadm.md5sums          |   1 +
 6 files changed, 172 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..0a9004f
--- /dev/null
+++ b/scripts/mdadm
@@ -0,0 +1,100 @@
+#!/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
+
+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..5fc9e11
--- /dev/null
+++ b/scripts/mdadm.md5sums
@@ -0,0 +1 @@
+efc6265fbfed68898f122344143747f9  unstable_0.16
-- 
2.40.1

Reply via email to