#!/bin/bash -eu

. shell-error
. initrd-sh-functions
. uevent-sh-functions
. /.initrd/initenv

pidfile="/var/run/$PROG.pid"
tsfile=/.initrd/md-raid-timeout
delay="${RAID_MEMBER_DELAY-}"

for e in "$1"/md-raid-member.*; do
	done_event "$e" ||:
done

[ -n "$delay" ] && [ "$delay" -gt 0 ] ||
	exit 0

now="$(date +'%s')"
touch -d "@$(($now + $delay))" "$tsfile"

[ ! -e "$pidfile" ] ||
	exit 0

(
	while :; do
		now="$(date +'%s')"
		ts="$(stat -c '%Y' "$tsfile")"
		[ "$ts" -ge "$now" ] ||
			break
		sleep 1
	done

	# inactive mdraid salvation (#28879)
	inactive=
	for md in /sys/block/*/md/array_state; do
		[ -e "$md" ] ||
			break

		readline state "$md"

		[ "$state" != "inactive" ] ||
			inactive=1
	done

	[ -z "$inactive" ] ||
		mdadm -IRs ||:

	for md in /sys/block/*/md/array_state; do
		[ -e "$md" ] ||
			break

		readline state "$md"

		[ "$state" = "read-auto" ] ||
			continue

		readline dev "${md%/md/array_state}/dev"

		mdadm -w "/dev/block/$dev" ||:
	done
) &

echo "$!" > "$pidfile"

