}
if command -v mdadm > /dev/null; then
- _do_md_shutdown $1
+ _do_md_shutdown "$1"
else
:
fi
}
if command -v mdmon > /dev/null; then
- _do_mdmon_takeover $1
+ _do_mdmon_takeover "$1"
fi
containers=""
for md in /dev/md[0-9_]*; do
[ -b "$md" ] || continue
- udevinfo="$(udevadm info --query=env --name=$md)"
+ udevinfo="$(udevadm info --query=env --name="$md")"
strstr "$udevinfo" "DEVTYPE=partition" && continue
if strstr "$udevinfo" "MD_LEVEL=container"; then
containers="$containers $md"
containers=""
for md in /dev/md[0-9_]*; do
[ -b "$md" ] || continue
- udevinfo="$(udevadm info --query=env --name=$md)"
+ udevinfo="$(udevadm info --query=env --name="$md")"
strstr "$udevinfo" "DEVTYPE=partition" && continue
if strstr "$udevinfo" "MD_LEVEL=container"; then
containers="$containers $md"
_md_force_run() {
local _md
local _UUID
- local _MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
+ local _MD_UUID
+
+ _MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
[ -n "$_MD_UUID" ] || getargbool 0 rd.auto || return
if [ -n "$_MD_UUID" ]; then
# called by dracut
check() {
- local _rootdev
+ local dev holder
+
# No mdadm? No mdraid support.
require_binaries mdadm expr || return 1
[[ ${host_fs_types[$dev]} != *_raid_member ]] && continue
UUID=$(
- /sbin/mdadm --examine --export $dev \
- | while read line || [ -n "$line" ]; do
- [[ ${line#MD_UUID=} == $line ]] && continue
+ /sbin/mdadm --examine --export "$dev" \
+ | while read -r line || [[ "$line" ]]; do
+ [[ ${line#MD_UUID=} == "$line" ]] && continue
printf "%s" "${line#MD_UUID=} "
done
)
local rule rule_path
inst_multiple cat expr
inst_multiple -o mdmon
- inst $(command -v partx) /sbin/partx
- inst $(command -v mdadm) /sbin/mdadm
+ inst "$(command -v partx)" /sbin/partx
+ inst "$(command -v mdadm)" /sbin/mdadm
if [[ $hostonly_cmdline == "yes" ]]; then
- local _raidconf=$(cmdline)
+ local _raidconf
+ _raidconf=$(cmdline)
[[ $_raidconf ]] && printf "%s\n" "$_raidconf" >> "${initdir}/etc/cmdline.d/90mdraid.conf"
fi
# assembled
for rule in 64-md-raid.rules 64-md-raid-assembly.rules; do
rule_path="${initdir}${udevdir}/rules.d/${rule}"
+ # shellcheck disable=SC2016
[ -f "${rule_path}" ] && sed -i -r \
-e '/(RUN|IMPORT\{program\})\+?="[[:alpha:]/]*mdadm[[:blank:]]+(--incremental|-I)[[:blank:]]+(--export )?(\$env\{DEVNAME\}|\$tempnode|\$devnode)/d' \
"${rule_path}"
inst_script "$moddir/mdraid_start.sh" /sbin/mdraid_start
if dracut_module_included "systemd"; then
if [[ -e $dracutsysrootdir$systemdsystemunitdir/mdmon@.service ]]; then
- inst_simple $systemdsystemunitdir/mdmon@.service
+ inst_simple "$systemdsystemunitdir"/mdmon@.service
fi
if [[ -e $dracutsysrootdir$systemdsystemunitdir/mdadm-last-resort@.service ]]; then
- inst_simple $systemdsystemunitdir/mdadm-last-resort@.service
+ inst_simple "$systemdsystemunitdir"/mdadm-last-resort@.service
fi
if [[ -e $dracutsysrootdir$systemdsystemunitdir/mdadm-last-resort@.timer ]]; then
- inst_simple $systemdsystemunitdir/mdadm-last-resort@.timer
+ inst_simple "$systemdsystemunitdir"/mdadm-last-resort@.timer
fi
if [[ -e $dracutsysrootdir$systemdsystemunitdir/mdadm-grow-continue@.service ]]; then
- inst_simple $systemdsystemunitdir/mdadm-grow-continue@.service
+ inst_simple "$systemdsystemunitdir"/mdadm-grow-continue@.service
fi
fi
inst_hook pre-shutdown 30 "$moddir/mdmon-pre-shutdown.sh"
#!/bin/sh
+# we really need to use `expr substr` with dash
+# shellcheck disable=SC2003
MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
# normalize the uuid
MD_UUID=$(str_replace "$MD_UUID" "-" "")
MD_UUID=$(str_replace "$MD_UUID" ":" "")
-if (! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
+if ([ -z "$MD_UUID" ] && ! getargbool 0 rd.auto) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
info "rd.md=0: removing MD RAID activation"
udevproperty rd_NO_MD=1
else
if [ -n "$MD_UUID" ]; then
for f in /etc/udev/rules.d/65-md-incremental*.rules; do
[ -e "$f" ] || continue
- while read line || [ -n "$line" ]; do
+ while read -r line || [ -n "$line" ]; do
if [ "${line%%UUID CHECK}" != "$line" ]; then
for uuid in $MD_UUID; do
- printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr $uuid 1 8)-$(expr substr $uuid 9 4)-$(expr substr $uuid 13 4)-$(expr substr $uuid 17 4)-$(expr substr $uuid 21 12)"
+ printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8)-$(expr substr "$uuid" 9 4)-$(expr substr "$uuid" 13 4)-$(expr substr "$uuid" 17 4)-$(expr substr "$uuid" 21 12)"
done
+ # shellcheck disable=SC2016
printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n'
for uuid in $MD_UUID; do
- printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr $uuid 1 8):$(expr substr $uuid 9 8):$(expr substr $uuid 17 8):$(expr substr $uuid 25 8)"
+ printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' "$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
done
printf 'GOTO="md_end"\n'
printf 'LABEL="md_uuid_ok"\n'
mv "${f}.new" "$f"
done
for uuid in $MD_UUID; do
- uuid="$(expr substr $uuid 1 8):$(expr substr $uuid 9 8):$(expr substr $uuid 17 8):$(expr substr $uuid 25 8)"
+ uuid="$(expr substr "$uuid" 1 8):$(expr substr "$uuid" 9 8):$(expr substr "$uuid" 17 8):$(expr substr "$uuid" 25 8)"
wait_for_dev "/dev/disk/by-id/md-uuid-${uuid}"
done
fi
if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
udevproperty rd_MDADMCONF=1
- rm -f -- $hookdir/pre-pivot/*mdraid-cleanup.sh
+ rm -f -- "$hookdir"/pre-pivot/*mdraid-cleanup.sh
fi
if ! getargbool 1 rd.md.conf -d -n rd_NO_MDADMCONF; then
rm -f -- /etc/mdadm/mdadm.conf /etc/mdadm.conf
- ln -s $(command -v mdraid-cleanup) $hookdir/pre-pivot/31-mdraid-cleanup.sh 2> /dev/null
+ ln -s "$(command -v mdraid-cleanup)" "$hookdir"/pre-pivot/31-mdraid-cleanup.sh 2> /dev/null
fi
# noiswmd nodmraid for anaconda / rc.sysinit compatibility