# start iscsiuio if needed
if [ -z "${DRACUT_SYSTEMD}" ] \
- && ([ -e /sys/module/bnx2i ] || [ -e /sys/module/qedi ]) \
+ && { [ -e /sys/module/bnx2i ] || [ -e /sys/module/qedi ]; } \
&& ! [ -e /tmp/iscsiuio-started ]; then
iscsiuio
- > /tmp/iscsiuio-started
+ : > /tmp/iscsiuio-started
fi
handle_firmware() {
)
retry=$(cat /tmp/session-retry)
- if [ $retry -lt $ifaces ]; then
+ if [ "$retry" -lt "$ifaces" ]; then
retry=$((retry + 1))
echo $retry > /tmp/session-retry
return 1
handle_netroot() {
local iscsi_initiator iscsi_target_name iscsi_target_ip iscsi_target_port
- local iscsi_target_group iscsi_protocol iscsirw iscsi_lun
+ local iscsi_target_group iscsirw iscsi_lun
local iscsi_username iscsi_password
local iscsi_in_username iscsi_in_password
local iscsi_iface_name iscsi_netdev_name
#limit iscsistart login retries
if [ "$login_retry_max_seen" != yes ]; then
retries=$(getargnum 3 0 10000 rd.iscsi.login_retry_max)
- if [ $retries -gt 0 ]; then
+ if [ "$retries" -gt 0 ]; then
iscsi_param="${iscsi_param% } node.session.initial_login_retry_max=$retries"
fi
fi
fsopts=${fsopts:+$fsopts,}${iscsirw}
if [ -z "$iscsi_initiator" ] && [ -f /sys/firmware/ibft/initiator/initiator-name ] && ! [ -f /tmp/iscsi_set_initiator ]; then
- iscsi_initiator=$(while read line || [ -n "$line" ]; do echo $line; done < /sys/firmware/ibft/initiator/initiator-name)
+ iscsi_initiator=$(while read -r line || [ -n "$line" ]; do echo "$line"; done < /sys/firmware/ibft/initiator/initiator-name)
echo "InitiatorName=$iscsi_initiator" > /run/initiatorname.iscsi
rm -f /etc/iscsi/initiatorname.iscsi
mkdir -p /etc/iscsi
ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
- > /tmp/iscsi_set_initiator
+ : > /tmp/iscsi_set_initiator
if [ -n "$DRACUT_SYSTEMD" ]; then
systemctl try-restart iscsid
# FIXME: iscsid is not yet ready, when the service is :-/
rm -f /etc/iscsi/initiatorname.iscsi
mkdir -p /etc/iscsi
ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
- > /tmp/iscsi_set_initiator
+ : > /tmp/iscsi_set_initiator
if [ -n "$DRACUT_SYSTEMD" ]; then
systemctl try-restart iscsid
# FIXME: iscsid is not yet ready, when the service is :-/
# install mount script
[ -z "$DRACUT_SYSTEMD" ] \
- && echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > $hookdir/mount/01-$$-iscsi.sh
+ && echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > "$hookdir"/mount/01-$$-iscsi.sh
fi
- if strglobin $iscsi_target_ip '*:*:*' && ! strglobin $iscsi_target_ip '['; then
+ if strglobin "$iscsi_target_ip" '*:*:*' && ! strglobin "$iscsi_target_ip" '['; then
iscsi_target_ip="[$iscsi_target_ip]"
fi
- targets=$(iscsiadm -m discovery -t st -p $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} | sed 's/^.*iqn/iqn/')
+ targets=$(iscsiadm -m discovery -t st -p "$iscsi_target_ip":${iscsi_target_port:+$iscsi_target_port} | sed 's/^.*iqn/iqn/')
[ -z "$targets" ] && echo "Target discovery to $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} failed with status $?" && exit 1
found=
for target in $targets; do
if [ "$target" = "$iscsi_target_name" ]; then
if [ -n "$iscsi_iface_name" ]; then
- iscsiadm -m iface -I $iscsi_iface_name --op=new
+ iscsiadm -m iface -I "$iscsi_iface_name" --op=new
EXTRA=" ${iscsi_netdev_name:+--name=iface.net_ifacename --value=$iscsi_netdev_name} "
EXTRA="$EXTRA ${iscsi_initiator:+--name=iface.initiatorname --value=$iscsi_initiator} "
fi
${iscsi_password:+ --name=node.session.auth.password --value=$iscsi_password} \
${iscsi_in_username:+--name=node.session.auth.username_in --value=$iscsi_in_username} \
${iscsi_in_password:+--name=node.session.auth.password_in --value=$iscsi_in_password} \
- $EXTRA \
- $NULL"
+ $EXTRA"
+ # shellcheck disable=SC2086
$CMD $__op
if [ "$netif" != "timeout" ]; then
$CMD --login
warn "iSCSI target \"$iscsi_target_name\" not found on portal $iscsi_target_ip:$iscsi_target_port"
return 1
fi
- > $hookdir/initqueue/work
+ : > "$hookdir"/initqueue/work
netroot_enc=$(str_replace "$1" '/' '\2f')
echo 'started' > "/tmp/iscsistarted-iscsi:${netroot_enc}"
# called by dracut
check() {
- local _rootdev
# If our prerequisites are not met, fail anyways.
require_binaries iscsi-iname iscsiadm iscsid || return 1
pushd . > /dev/null
for_each_host_dev_and_slaves block_is_iscsi
local _is_iscsi=$?
- popd > /dev/null
+ popd > /dev/null || exit
[[ $_is_iscsi == 0 ]] || return 255
}
return 0
iface_mac=${iface_desc#*,}
iface_mac=${iface_mac%%,*}
if [ "$ibft_mac" = "$iface_mac" ]; then
- echo $iface_mod
+ echo "$iface_mod"
return 0
fi
done
# - specify firmware booting cmdline parameter
for d in /sys/firmware/*; do
- if [ -d ${d}/ethernet0 ]; then
- read ibft_mac < ${d}/ethernet0/mac
- ibft_mod=$(get_ibft_mod $ibft_mac)
+ if [ -d "${d}"/ethernet0 ]; then
+ read -r ibft_mac < "${d}"/ethernet0/mac
+ ibft_mod=$(get_ibft_mod "$ibft_mac")
fi
- if [ -z "$ibft_mod" ] && [ -d ${d}/ethernet1 ]; then
- read ibft_mac < ${d}/ethernet1/mac
- ibft_mod=$(get_ibft_mod $ibft_mac)
+ if [ -z "$ibft_mod" ] && [ -d "${d}"/ethernet1 ]; then
+ read -r ibft_mac < "${d}"/ethernet1/mac
+ ibft_mod=$(get_ibft_mod "$ibft_mac")
fi
- if [ -d ${d}/initiator ]; then
- if [ ${d##*/} = "ibft" ] && [ "$ibft_mod" != "bnx2i" ]; then
+ if [ -d "${d}"/initiator ]; then
+ if [ "${d##*/}" = "ibft" ] && [ "$ibft_mod" != "bnx2i" ]; then
echo -n "rd.iscsi.ibft=1 "
fi
echo -n "rd.iscsi.firmware=1 "
install_iscsiroot() {
local devpath=$1
local scsi_path iscsi_lun session c d conn host flash
- local iscsi_session iscsi_address iscsi_port iscsi_targetname iscsi_tpgt
- local bootproto
+ local iscsi_session iscsi_address iscsi_port iscsi_targetname
scsi_path=${devpath%%/block*}
[ "$scsi_path" = "$devpath" ] && return 1
[ "$host" = "$session" ] && return 1
iscsi_host=${host##*/}
- for flash in ${host}/flashnode_sess-*; do
+ for flash in "${host}"/flashnode_sess-*; do
[ -f "$flash" ] || continue
[ ! -e "$flash/is_boot_target" ] && continue
- is_boot=$(cat $flash/is_boot_target)
- if [ $is_boot -eq 1 ]; then
+ is_boot=$(cat "$flash"/is_boot_target)
+ if [ "$is_boot" -eq 1 ]; then
# qla4xxx flashnode session; skip iBFT discovery
- iscsi_initiator=$(cat /sys/class/iscsi_host/${iscsi_host}/initiatorname)
+ iscsi_initiator=$(cat /sys/class/iscsi_host/"${iscsi_host}"/initiatorname)
echo "rd.iscsi.initiator=${iscsi_initiator}"
return
fi
done
- for d in ${session}/*; do
+ for d in "${session}"/*; do
case $d in
*connection*)
c=${d##*/}
conn=${d}/iscsi_connection/${c}
- if [ -d ${conn} ]; then
- iscsi_address=$(cat ${conn}/persistent_address)
- iscsi_port=$(cat ${conn}/persistent_port)
+ if [ -d "${conn}" ]; then
+ iscsi_address=$(cat "${conn}"/persistent_address)
+ iscsi_port=$(cat "${conn}"/persistent_port)
fi
;;
*session)
- if [ -d ${d}/${iscsi_session} ]; then
- iscsi_initiator=$(cat ${d}/${iscsi_session}/initiatorname)
- iscsi_targetname=$(cat ${d}/${iscsi_session}/targetname)
+ if [ -d "${d}"/"${iscsi_session}" ]; then
+ iscsi_initiator=$(cat "${d}"/"${iscsi_session}"/initiatorname)
+ iscsi_targetname=$(cat "${d}"/"${iscsi_session}"/targetname)
fi
;;
esac
[[ -L "/sys/dev/block/$_dev" ]] || return
iscsi_dev=$(
- cd -P /sys/dev/block/$_dev
- echo $PWD
+ cd -P /sys/dev/block/"$_dev" || exit
+ echo "$PWD"
)
- install_iscsiroot $iscsi_dev
+ install_iscsiroot "$iscsi_dev"
}
for_each_host_dev_and_slaves_all is_softiscsi || return 255
# called by dracut
cmdline() {
- local _iscsiconf=$(install_ibft)
+ local _iscsiconf
+ _iscsiconf=$(install_ibft)
{
if [ "$_iscsiconf" ]; then
- echo ${_iscsiconf}
+ echo "${_iscsiconf}"
else
install_softiscsi
fi
inst_multiple umount iscsi-iname iscsiadm iscsid
inst_multiple -o \
- $systemdsystemunitdir/iscsid.socket \
- $systemdsystemunitdir/iscsid.service \
- $systemdsystemunitdir/iscsiuio.service \
- $systemdsystemunitdir/iscsiuio.socket \
- $systemdsystemunitdir/sockets.target.wants/iscsid.socket \
- $systemdsystemunitdir/sockets.target.wants/iscsiuio.socket
+ "$systemdsystemunitdir"/iscsid.socket \
+ "$systemdsystemunitdir"/iscsid.service \
+ "$systemdsystemunitdir"/iscsiuio.service \
+ "$systemdsystemunitdir"/iscsiuio.socket \
+ "$systemdsystemunitdir"/sockets.target.wants/iscsid.socket \
+ "$systemdsystemunitdir"/sockets.target.wants/iscsiuio.socket
if [[ $hostonly ]]; then
+ local -a _filenames
+
inst_dir /etc/iscsi
- inst_multiple $(find /etc/iscsi -type f)
+ mapfile -t -d '' _filenames < <(find /etc/iscsi -type f -print0)
+ inst_multiple "${_filenames[@]}"
else
inst_simple /etc/iscsi/iscsid.conf
fi
# Detect iBFT and perform mandatory steps
if [[ $hostonly_cmdline == "yes" ]]; then
- local _iscsiconf=$(cmdline)
+ local _iscsiconf
+ _iscsiconf=$(cmdline)
[[ $_iscsiconf ]] && printf "%s\n" "$_iscsiconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf"
fi
inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh"
else
inst_multiple -o \
- $systemdsystemunitdir/iscsi.service \
- $systemdsystemunitdir/iscsid.service \
- $systemdsystemunitdir/iscsid.socket \
- $systemdsystemunitdir/iscsiuio.service \
- $systemdsystemunitdir/iscsiuio.socket \
+ "$systemdsystemunitdir"/iscsi.service \
+ "$systemdsystemunitdir"/iscsid.service \
+ "$systemdsystemunitdir"/iscsid.socket \
+ "$systemdsystemunitdir"/iscsiuio.service \
+ "$systemdsystemunitdir"/iscsiuio.socket \
iscsiadm iscsid
for i in \
iscsid.socket \
- iscsiuio.socket \
- ${NULL}; do
+ iscsiuio.socket; do
$SYSTEMCTL -q --root "$initdir" enable "$i"
done
for i in \
iscsid.service \
- iscsiuio.service \
- ${NULL}; do
+ iscsiuio.service; do
$SYSTEMCTL -q --root "$initdir" add-wants basic.target "$i"
done
#!/bin/sh
-if [ -z $iscsi_lun ]; then
+if [ -z "$iscsi_lun" ]; then
iscsi_lun=0
fi
NEWROOT=${NEWROOT:-/sysroot}
-for disk in /dev/disk/by-path/*-iscsi-*-$iscsi_lun; do
- if mount -t ${fstype:-auto} -o "$rflags" $disk $NEWROOT; then
- if [ ! -d $NEWROOT/proc ]; then
- umount $disk
+for disk in /dev/disk/by-path/*-iscsi-*-"$iscsi_lun"; do
+ if mount -t "${fstype:-auto}" -o "$rflags" "$disk" "$NEWROOT"; then
+ if [ ! -d "$NEWROOT"/proc ]; then
+ umount "$disk"
continue
fi
break
modprobe -b -q iscsi_boot_sysfs 2> /dev/null
modprobe -b -q iscsi_ibft
# if no ip= is given, but firmware
- echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-firmware' ]" > $hookdir/initqueue/finished/iscsi_started.sh
+ echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-firmware' ]" > "$hookdir"/initqueue/finished/iscsi_started.sh
initqueue --unique --online /sbin/iscsiroot online "iscsi:" "$NEWROOT"
initqueue --unique --onetime --timeout /sbin/iscsiroot timeout "iscsi:" "$NEWROOT"
initqueue --unique --onetime --settled /sbin/iscsiroot online "iscsi:" "'$NEWROOT'"
fi
# If not given on the cmdline and initiator-name available via iBFT
-if [ -z $iscsi_initiator ] && [ -f /sys/firmware/ibft/initiator/initiator-name ] && ! [ -f /tmp/iscsi_set_initiator ]; then
- iscsi_initiator=$(while read line || [ -n "$line" ]; do echo $line; done < /sys/firmware/ibft/initiator/initiator-name)
+if [ -z "$iscsi_initiator" ] && [ -f /sys/firmware/ibft/initiator/initiator-name ] && ! [ -f /tmp/iscsi_set_initiator ]; then
+ iscsi_initiator=$(while read -r line || [ -n "$line" ]; do echo "$line"; done < /sys/firmware/ibft/initiator/initiator-name)
if [ -n "$iscsi_initiator" ]; then
echo "InitiatorName=$iscsi_initiator" > /run/initiatorname.iscsi
rm -f /etc/iscsi/initiatorname.iscsi
mkdir -p /etc/iscsi
ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi
- > /tmp/iscsi_set_initiator
+ : > /tmp/iscsi_set_initiator
if [ -n "$DRACUT_SYSTEMD" ]; then
systemctl try-restart iscsid
# FIXME: iscsid is not yet ready, when the service is :-/
type parse_iscsi_root > /dev/null 2>&1 || . /lib/net-lib.sh
parse_iscsi_root "$nroot" || return 1
netroot_enc=$(str_replace "$nroot" '/' '\2f')
- echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-$netroot_enc' ]" > $hookdir/initqueue/finished/iscsi_started.sh
+ echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-$netroot_enc' ]" > "$hookdir"/initqueue/finished/iscsi_started.sh
done
# Done, all good!
+# shellcheck disable=SC2034
rootok=1
# Shut up init error check