90mdraid: add "--offroot" support
parent
e76921a58e
commit
e539fa9980
|
@ -35,6 +35,6 @@ RUN+="/sbin/initqueue --timeout --name 50-mdraid_start --onetime --unique /sbin/
|
||||||
#
|
#
|
||||||
LABEL="md_incremental"
|
LABEL="md_incremental"
|
||||||
|
|
||||||
RUN+="/sbin/mdadm -I $env{DEVNAME}"
|
RUN+="/sbin/mdadm $env{rd_MD_OFFROOT} -I $env{DEVNAME}"
|
||||||
|
|
||||||
LABEL="md_end"
|
LABEL="md_end"
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
_do_md_shutdown() {
|
_do_md_shutdown() {
|
||||||
local ret
|
local ret
|
||||||
local final=$1
|
local final=$1
|
||||||
|
local _offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot)
|
||||||
info "Disassembling mdraid devices."
|
info "Disassembling mdraid devices."
|
||||||
mdadm -v --stop --scan
|
mdadm $_offroot -v --stop --scan
|
||||||
ret=$?
|
ret=$?
|
||||||
if [ "x$final" != "x" ]; then
|
if [ "x$final" != "x" ]; then
|
||||||
info "cat /proc/mdstat"
|
info "cat /proc/mdstat"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
|
|
||||||
|
_offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot)
|
||||||
containers=""
|
containers=""
|
||||||
for md in /dev/md[0-9_]*; do
|
for md in /dev/md[0-9_]*; do
|
||||||
[ -b "$md" ] || continue
|
[ -b "$md" ] || continue
|
||||||
|
@ -13,11 +14,11 @@ for md in /dev/md[0-9_]*; do
|
||||||
containers="$containers $md"
|
containers="$containers $md"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
mdadm -S "$md" >/dev/null 2>&1 || need_shutdown
|
mdadm $_offroot -S "$md" >/dev/null 2>&1 || need_shutdown
|
||||||
done
|
done
|
||||||
|
|
||||||
for md in $containers; do
|
for md in $containers; do
|
||||||
mdadm -S "$md" >/dev/null 2>&1 || need_shutdown
|
mdadm $_offroot -S "$md" >/dev/null 2>&1 || need_shutdown
|
||||||
done
|
done
|
||||||
|
|
||||||
unset containers udevinfo
|
unset containers udevinfo _offroot
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
||||||
|
|
||||||
if getargbool 0 rd.md.waitclean; then
|
if getargbool 0 rd.md.waitclean; then
|
||||||
|
_offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot)
|
||||||
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
||||||
containers=""
|
containers=""
|
||||||
for md in /dev/md[0-9_]*; do
|
for md in /dev/md[0-9_]*; do
|
||||||
|
@ -14,13 +15,13 @@ if getargbool 0 rd.md.waitclean; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
info "Waiting for $md to become clean"
|
info "Waiting for $md to become clean"
|
||||||
mdadm -W "$md" >/dev/null 2>&1
|
mdadm $_offroot -W "$md" >/dev/null 2>&1
|
||||||
done
|
done
|
||||||
|
|
||||||
for md in $containers; do
|
for md in $containers; do
|
||||||
info "Waiting for $md to become clean"
|
info "Waiting for $md to become clean"
|
||||||
mdadm -W "$md" >/dev/null 2>&1
|
mdadm $_offroot -W "$md" >/dev/null 2>&1
|
||||||
done
|
done
|
||||||
|
|
||||||
unset containers udevinfo
|
unset containers udevinfo _offroot
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -7,6 +7,8 @@ _md_force_run() {
|
||||||
local _udevinfo
|
local _udevinfo
|
||||||
local _path_s
|
local _path_s
|
||||||
local _path_d
|
local _path_d
|
||||||
|
local _offroot
|
||||||
|
_offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot)
|
||||||
# try to force-run anything not running yet
|
# try to force-run anything not running yet
|
||||||
for md in /dev/md[0-9_]*; do
|
for md in /dev/md[0-9_]*; do
|
||||||
[ -b "$md" ] || continue
|
[ -b "$md" ] || continue
|
||||||
|
@ -20,7 +22,7 @@ _md_force_run() {
|
||||||
# inactive ?
|
# inactive ?
|
||||||
[ "$(cat "$_path_s")" != "inactive" ] && continue
|
[ "$(cat "$_path_s")" != "inactive" ] && continue
|
||||||
|
|
||||||
mdadm -R "$md" 2>&1 | vinfo
|
mdadm $_offroot -R "$md" 2>&1 | vinfo
|
||||||
|
|
||||||
# still inactive ?
|
# still inactive ?
|
||||||
[ "$(cat "$_path_s")" = "inactive" ] && continue
|
[ "$(cat "$_path_s")" = "inactive" ] && continue
|
||||||
|
@ -29,7 +31,7 @@ _md_force_run() {
|
||||||
[ ! -r "$_path_d" ] && continue
|
[ ! -r "$_path_d" ] && continue
|
||||||
|
|
||||||
# workaround for mdmon bug
|
# workaround for mdmon bug
|
||||||
[ "$(cat "$_path_d")" -gt "0" ] && mdmon --takeover "$md"
|
[ "$(cat "$_path_d")" -gt "0" ] && mdmon $_offroot --takeover "$md"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,3 +51,5 @@ if ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF || getarg noddfmd || getarg nodmraid;
|
||||||
info "no MD RAID for SNIA ddf raids"
|
info "no MD RAID for SNIA ddf raids"
|
||||||
udevproperty rd_NO_MDDDF=1
|
udevproperty rd_NO_MDDDF=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
strstr "$(mdadm --help-options 2>&1)" offroot && udevproperty rd_MD_OFFROOT=--offroot
|
||||||
|
|
Loading…
Reference in New Issue