]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(iscsi): shellcheck for modules.d/95iscsi
authorHarald Hoyer <harald@redhat.com>
Fri, 26 Mar 2021 09:29:27 +0000 (10:29 +0100)
committerHarald Hoyer <harald@hoyer.xyz>
Tue, 30 Mar 2021 06:56:18 +0000 (08:56 +0200)
modules.d/95iscsi/.shchkdir [new file with mode: 0644]
modules.d/95iscsi/iscsiroot.sh
modules.d/95iscsi/module-setup.sh
modules.d/95iscsi/mount-lun.sh
modules.d/95iscsi/parse-iscsiroot.sh

diff --git a/modules.d/95iscsi/.shchkdir b/modules.d/95iscsi/.shchkdir
new file mode 100644 (file)
index 0000000..e69de29
index 4d39d4a98afbd21b54f09d5a78dde4e457a7bb5a..63acd85873b81a69a4a85499b18cc9174eea0199 100755 (executable)
@@ -38,10 +38,10 @@ modprobe crc32c 2> /dev/null
 
 # 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() {
@@ -61,7 +61,7 @@ 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
@@ -84,7 +84,7 @@ handle_firmware() {
 
 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
@@ -123,7 +123,7 @@ handle_netroot() {
     #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
@@ -134,12 +134,12 @@ handle_netroot() {
     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 :-/
@@ -160,7 +160,7 @@ handle_netroot() {
         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 :-/
@@ -208,20 +208,20 @@ handle_netroot() {
 
         # 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
@@ -236,8 +236,8 @@ handle_netroot() {
                      ${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
@@ -253,7 +253,7 @@ handle_netroot() {
         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}"
index bd8c92b6d91d774c11d7f61044e7d73bfbdf14a8..fe730adc8daa9988ffc6c2759638d71e38157a36 100755 (executable)
@@ -2,7 +2,6 @@
 
 # called by dracut
 check() {
-    local _rootdev
     # If our prerequisites are not met, fail anyways.
     require_binaries iscsi-iname iscsiadm iscsid || return 1
 
@@ -13,7 +12,7 @@ check() {
         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
@@ -28,7 +27,7 @@ get_ibft_mod() {
         iface_mac=${iface_desc#*,}
         iface_mac=${iface_mac%%,*}
         if [ "$ibft_mac" = "$iface_mac" ]; then
-            echo $iface_mod
+            echo "$iface_mod"
             return 0
         fi
     done
@@ -42,16 +41,16 @@ install_ibft() {
     # - 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 "
@@ -62,8 +61,7 @@ install_ibft() {
 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
@@ -77,32 +75,32 @@ install_iscsiroot() {
     [ "$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
@@ -142,10 +140,10 @@ install_softiscsi() {
 
         [[ -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
@@ -174,10 +172,11 @@ installkernel() {
 
 # called by dracut
 cmdline() {
-    local _iscsiconf=$(install_ibft)
+    local _iscsiconf
+    _iscsiconf=$(install_ibft)
     {
         if [ "$_iscsiconf" ]; then
-            echo ${_iscsiconf}
+            echo "${_iscsiconf}"
         else
             install_softiscsi
         fi
@@ -191,23 +190,27 @@ install() {
     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
 
@@ -219,24 +222,22 @@ install() {
         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
 
index 1a47dea79c47539113c50d0ad0ee416c087c7840..c1869844eaa91e97d71c00a4c4d92824eab3b015 100755 (executable)
@@ -1,13 +1,13 @@
 #!/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
index 9303c9ee597b75361bfcafd4c26bec860a971fd3..75747111ea2302926de136ecd00a2edddce7477b 100755 (executable)
@@ -84,7 +84,7 @@ if [ -n "$iscsi_firmware" ]; then
     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'"
@@ -118,14 +118,14 @@ if arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) && [ -n "$arg" ] && ! [
 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 :-/
@@ -145,10 +145,11 @@ for nroot in $(getargs netroot); do
     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