]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Trim excess shellcheck annotations. Widen to all non-Korn scripts
authorнаб <nabijaczleweli@nabijaczleweli.xyz>
Fri, 14 May 2021 12:02:11 +0000 (14:02 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 20 May 2021 15:55:23 +0000 (08:55 -0700)
Before, make shellcheck checked
  scripts/{commitcheck,make_gitrev,man-dates,paxcheck,zfs-helpers,zfs,
           zfs-tests,zimport,zloop}.sh
  cmd/zed/zed.d/{{all-debug,all-syslog,data-notify,generic-notify,
                 resilver_finish-start-scrub,scrub_finish-notify,
                 statechange-led,statechange-notify,trim_finish-notify,
                 zed-functions}.sh,history_event-zfs-list-cacher.sh.in}
  cmd/zpool/zpool.d/{dm-deps,iostat,lsblk,media,ses,smart,upath}
now it also checks
  contrib/dracut/{02zfsexpandknowledge/module-setup,
                  90zfs/{export-zfs,parse-zfs,zfs-needshutdown,
                         zfs-load-key,zfs-lib,module-setup,
                         mount-zfs,zfs-generator}}.sh.in
  cmd/zed/zed.d/{pool_import-led,vdev_attach-led,
                 resilver_finish-notify,vdev_clear-led}.sh
  contrib/initramfs/{zfsunlock,hooks/zfs.in,scripts/local-top/zfs}
  tests/zfs-tests/tests/perf/scripts/prefetch_io.sh
  scripts/common.sh.in
  contrib/bpftrace/zfs-trace.sh
  autogen.sh

Reviewed-by: John Kennedy <john.kennedy@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #12042

18 files changed:
Makefile.am
cmd/fsck_zfs/fsck.zfs.in
cmd/zed/zed.d/zed-functions.sh
cmd/zvol_wait/zvol_wait
contrib/dracut/02zfsexpandknowledge/module-setup.sh.in
contrib/dracut/90zfs/module-setup.sh.in
contrib/dracut/90zfs/mount-zfs.sh.in
contrib/dracut/90zfs/parse-zfs.sh.in
contrib/dracut/90zfs/zfs-generator.sh.in
contrib/dracut/90zfs/zfs-lib.sh.in
contrib/dracut/90zfs/zfs-load-key.sh.in
contrib/initramfs/hooks/zfs.in
contrib/initramfs/scripts/local-top/zfs
scripts/zfs-tests.sh
scripts/zimport.sh
scripts/zloop.sh
tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_duplicates.ksh
tests/zfs-tests/tests/perf/scripts/prefetch_io.sh

index 32ac50f78ae2936524fd1902d278d877d5946e73..efe99142e6a05686081282af33273d06a6767686 100644 (file)
@@ -126,9 +126,9 @@ filter_executable = -exec test -x '{}' \; -print
 PHONY += shellcheck
 shellcheck:
        @if type shellcheck > /dev/null 2>&1; then \
-               shellcheck --exclude=SC1090 --exclude=SC1117 --format=gcc \
-                       $$(find ${top_srcdir}/scripts/*.sh -type f) \
-                       $$(find ${top_srcdir}/cmd/zed/zed.d/*.sh -type f) \
+               shellcheck --exclude=SC1090,SC1117,SC1091 --format=gcc \
+                       $$(find ${top_srcdir} -name "config*" -prune -name tests -prune \
+                               -o -name "*.sh" -o -name "*.sh.in" -type f) \
                        $$(find ${top_srcdir}/cmd/zpool/zpool.d/* \
                        -type f ${filter_executable}); \
        else \
index 32c8043e68fb920a0f7ce0e23988ff5eff1891e0..37096902cb947f4f4ff00288713a238cae844cd1 100755 (executable)
@@ -26,15 +26,15 @@ for dataset in "$@"; do
 
        case "$(@sbindir@/zpool list -Ho health "$pool")" in
                DEGRADED)
-                       ret=$(( $ret | 4 ))
+                       ret=$(( ret | 4 ))
                        ;;
                FAULTED)
                        awk '!/^([[:space:]]*#.*)?$/ && $1 == "'"$dataset"'" && $3 == "zfs" {exit 1}' /etc/fstab || \
-                               ret=$(( $ret | 8 ))
+                               ret=$(( ret | 8 ))
                        ;;
                "")
                        # Pool not found, error printed by zpool(8)
-                       ret=$(( $ret | 8 ))
+                       ret=$(( ret | 8 ))
                        ;;
                *)
                        ;;
index 7c1a7b6ce06af1687f886f3f8d7d8f30ce3c7424..c4ed5aa8ac7a110e1d0c79cb9d0fc6c70d054b2c 100644 (file)
@@ -267,7 +267,7 @@ zed_notify_email()
                 -e "s/@SUBJECT@/${subject}/g")"
 
     # shellcheck disable=SC2086
-    eval "${ZED_EMAIL_PROG}" ${ZED_EMAIL_OPTS} < "${pathname}" >/dev/null 2>&1
+    ${ZED_EMAIL_PROG} ${ZED_EMAIL_OPTS} < "${pathname}" >/dev/null 2>&1
     rv=$?
     if [ "${rv}" -ne 0 ]; then
         zed_log_err "$(basename "${ZED_EMAIL_PROG}") exit=${rv}"
index cc6ba5e62572513206058ec42d698e5924220f76..2aa929b0ca2b577bf76f6dd096b8d080c52874bf 100755 (executable)
@@ -20,6 +20,7 @@ filter_out_deleted_zvols() {
        OIFS="$IFS"
        IFS="
 "
+       # shellcheck disable=SC2086
        zfs list -H -o name $zvols 2>/dev/null
        IFS="$OIFS"
 }
index 12f5d91e93ec47aa679716348871a29daa6c081f..d21ab74cc0d05906b7f42a3e7a4deac5a4ab90de 100755 (executable)
@@ -14,21 +14,16 @@ get_pool_devices() {
   local poolconfigtemp
   local poolconfigoutput
   local pooldev
-  local prefix
   local resolved
-  poolconfigtemp=`mktemp`
+  poolconfigtemp="$(mktemp)"
   if ! @sbindir@/zpool list -v -H -P "$1" > "$poolconfigtemp" 2>&1 ; then
-    poolconfigoutput=$(cat "$poolconfigtemp")
+    poolconfigoutput="$(cat "$poolconfigtemp")"
     dinfo "zfsexpandknowledge: pool $1 cannot be listed: $poolconfigoutput"
   else
-    cat "$poolconfigtemp" |  awk -F '\t' '/\t\/dev/ { print $2 }' | \
-    while read pooldev ; do
-        if [ -n "$pooldev" -a -e "$pooldev" ] ; then
-          if [ -h "$pooldev" ] ; then
-              resolved=`readlink -f "$pooldev"`
-          else
-              resolved="$pooldev"
-          fi
+    awk -F '\t' '/\t\/dev/ { print $2 }' "$poolconfigtemp" | \
+    while read -r pooldev ; do
+        if [ -e "$pooldev" ] ; then
+          resolved="$(readlink -f "$pooldev")"
           dinfo "zfsexpandknowledge: pool $1 has device $pooldev (which resolves to $resolved)"
           echo "$resolved"
         fi
@@ -39,22 +34,20 @@ get_pool_devices() {
 
 find_zfs_block_devices() {
     local dev
-    local blockdev
     local mp
     local fstype
     local pool
-    local key
-    local n
-    local poolconfigoutput
-    numfields=`head -1 /proc/self/mountinfo | awk '{print NF}'`
-    if [ "$numfields" == "10" ] ; then
-        fields="n n n n mp n n fstype dev n"
+    local _
+    numfields="$(awk '{print NF; exit}' /proc/self/mountinfo)"
+    if [ "$numfields" = "10" ] ; then
+        fields="_ _ _ _ mp _ _ fstype dev _"
     else
-        fields="n n n n mp n n n fstype dev n"
+        fields="_ _ _ _ mp _ _ _ fstype dev _"
     fi
-    while read $fields ; do
-       if [ "$fstype" != "zfs" ]; then continue ; fi
-       if [ "$mp" == "$1" ]; then
+    # shellcheck disable=SC2086
+    while read -r ${fields?} ; do
+       [ "$fstype" = "zfs" ] || continue
+       if [ "$mp" = "$1" ]; then
            pool=$(echo "$dev" | cut -d / -f 1)
            get_pool_devices "$pool"
        fi
@@ -76,10 +69,9 @@ check() {
     local _depdev
     local _depdevname
     local _depdevtype
-    local _depmajmin
-    local _dev
 
-if [[ $hostonly ]]; then
+# shellcheck disable=SC2154
+if [ -n "$hostonly" ]; then
 
     for mp in \
         "/" \
@@ -106,13 +98,12 @@ if [[ $hostonly ]]; then
             fstype=$(get_devtype "$dev")
             host_fs_types["$dev"]="$fstype"
             majmin=$(get_maj_min "$dev")
-            if [[ -d /sys/dev/block/$majmin/slaves ]] ; then
-                for _depdev in /sys/dev/block/$majmin/slaves/*; do
+            if [ -d "/sys/dev/block/$majmin/slaves" ] ; then
+                for _depdev in "/sys/dev/block/$majmin/slaves"/*; do
                     [[ -f $_depdev/dev ]] || continue
                     _depdev=/dev/$(basename "$_depdev")
                     _depdevname=$(udevadm info --query=property --name="$_depdev" | grep "^DEVNAME=" | sed 's|^DEVNAME=||')
                     _depdevtype=$(get_devtype "$_depdevname")
-                    _depmajmin=$(get_maj_min "$_depdevname")
                     dinfo "zfsexpandknowledge: underlying block device backing ZFS dataset $mp: ${_depdevname//$'\n'/ }"
                     array_contains "$_depdevname" "${host_devs[@]}" || host_devs+=("$_depdevname")
                     host_fs_types["$_depdevname"]="$_depdevtype"
index 416282f009de5890150713a991bbd30368e94424..b0318de92ee6ba1241ebe4ed9f1c026073be9702 100755 (executable)
@@ -1,4 +1,5 @@
 #!/usr/bin/env bash
+# shellcheck disable=SC2154
 
 check() {
        # We depend on udev-rules being loaded
@@ -56,6 +57,7 @@ install() {
                # Fallback: Guess the path and include all matches
                dracut_install /usr/lib/gcc/*/*/libgcc_s.so*
        fi
+       # shellcheck disable=SC2050
        if [ @LIBFETCH_DYNAMIC@ != 0 ]; then
                for d in $libdirs; do
                        [ -e "$d"/@LIBFETCH_SONAME@ ] && dracut_install "$d"/@LIBFETCH_SONAME@
index 5ad6a0f2601c9308a2cb18dc7b56bc164dba5c64..4f2a51ca66f463eb066b738decc70ec943c56995 100755 (executable)
@@ -1,4 +1,5 @@
 #!/bin/sh
+# shellcheck disable=SC2034,SC2154
 
 . /lib/dracut-zfs-lib.sh
 
@@ -39,6 +40,7 @@ udevadm settle
 
 if [ "${root}" = "zfs:AUTO" ] ; then
        if ! ZFS_DATASET="$(find_bootfs)" ; then
+               # shellcheck disable=SC2086
                zpool import -N -a ${ZPOOL_IMPORT_OPTS}
                if ! ZFS_DATASET="$(find_bootfs)" ; then
                        warn "ZFS: No bootfs attribute found in importable pools."
index 768de9dd2512753b614a42c882ec8c53c08ddada..fe786a88069984580119109daaab53dbf87fb8d2 100755 (executable)
@@ -1,4 +1,5 @@
 #!/bin/sh
+# shellcheck disable=SC2034,SC2154
 
 . /lib/dracut-lib.sh
 
@@ -28,7 +29,7 @@ case "${root}" in
                info "ZFS: Enabling autodetection of bootfs after udev settles."
                ;;
 
-       ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*)
+       ZFS=*|zfs:*|FILESYSTEM=*)
                # root is explicit ZFS root.  Parse it now.  We can handle
                # a root=... param in any of the following formats:
                # root=ZFS=rpool/ROOT
index e3fbf334f7d021629dec55327d6abdf564d81d23..b57c64c688b1fe1859a46f9ed866669400f4ff0c 100755 (executable)
@@ -1,4 +1,5 @@
 #!/bin/sh
+# shellcheck disable=SC2016,SC1004
 
 grep -wq debug /proc/cmdline && debug=1
 [ -n "$debug" ] && echo "zfs-generator: starting" >> /dev/kmsg
index 98e4452a791b4f80aa9a6659c3b17a0c2319fb2c..10b0b701a233ed196aa00114d193cd23999e9e32 100755 (executable)
@@ -59,6 +59,7 @@ import_pool() {
 
     if ! zpool list -H "${pool}" > /dev/null 2>&1; then
         info "ZFS: Importing pool ${pool}..."
+        # shellcheck disable=SC2086
         if ! zpool import -N ${ZPOOL_IMPORT_OPTS} "${pool}" ; then
             warn "ZFS: Unable to import pool ${pool}"
             return 1
@@ -123,13 +124,12 @@ for_relevant_root_children() {
 # export_all OPTS
 #   exports all imported zfs pools.
 export_all() {
-    opts="${@}"
     ret=0
 
     IFS="${NEWLINE}"
     for pool in $(zpool list -H -o name) ; do
         if zpool list -H "${pool}" > /dev/null 2>&1; then
-            zpool export "${pool}" ${opts} || ret=$?
+            zpool export "${pool}" "$@" || ret=$?
         fi
     done
     IFS="${OLDIFS}"
index f17f0c7af8eb89d0cae1570ef9cef96892284c78..8fd3e5fd52c8291116be9a5be9b666ac51ec08c8 100755 (executable)
@@ -1,4 +1,5 @@
 #!/bin/sh
+# shellcheck disable=SC2154
 
 # only run this on systemd systems, we handle the decrypt in mount-zfs.sh in the mount hook otherwise
 [ -e /bin/systemctl ] || [ -e /usr/bin/systemctl ] || return 0
index 7e401d1e87e18ed17c22bc43d15960340764c770..bdf169fd96c2da43a8ebcf57f21f166529534a83 100755 (executable)
@@ -26,12 +26,13 @@ fi
 
 # We use pthreads, but i-t from buster doesn't automatically
 # copy this indirect dependency: this can be removed when buster finally dies.
-for libgcc in $(find /lib/ -type f -name libgcc_s.so.[1-9]); do
+find /lib/ -type f -name "libgcc_s.so.[1-9]" | while read -r libgcc; do
        copy_exec "$libgcc"
 done
 
+# shellcheck disable=SC2050
 if [ @LIBFETCH_DYNAMIC@ != 0 ]; then
-       for libfetch in $(find /lib/ -name @LIBFETCH_SONAME@); do
+       find /lib/ -name @LIBFETCH_SONAME@ | while read -r libfetch; do
                copy_exec "$libfetch"
        done
 fi
index e8e5cd26451cbc0a6995c275c7c3bf0476ec1478..6b80e9f43607215a377adac12936ddfa463e1d79 100755 (executable)
@@ -1,18 +1,11 @@
 #!/bin/sh
-PREREQ="mdadm mdrun multipath"
+# shellcheck disable=SC2154
 
-prereqs()
-{
-        echo "$PREREQ"
-}
 
-case $1 in
-# get pre-requisites
-prereqs)
-        prereqs
+if [ "$1" = "prereqs" ]; then
+        echo mdadm mdrun multipath
         exit 0
-        ;;
-esac
+fi
 
 
 #
@@ -20,10 +13,10 @@ esac
 #
 message()
 {
-        if [ -x /bin/plymouth ] && plymouth --ping; then
-                plymouth message --text="$@"
+        if plymouth --ping 2>/dev/null; then
+                plymouth message --text="$*"
         else
-                echo "$@" >&2
+                echo "$*" >&2
         fi
         return 0
 }
index 45e08473d35cf5340664f0d906b22444c32446e8..edb9c9f106c2368df01c3ddb07d353bf99489674 100755 (executable)
@@ -355,7 +355,6 @@ while getopts 'hvqxkfScn:d:s:r:?t:T:u:I:' OPTION; do
                exit 1
                ;;
        v)
-               # shellcheck disable=SC2034
                VERBOSE="yes"
                ;;
        q)
index 0490f785d5b073f740609bc63e7a76bd9b27deca..0e9c01182b8b8668b1f5794fcc5e1e39ad3f3359 100755 (executable)
@@ -164,15 +164,13 @@ populate() {
        local MAX_DIR_SIZE=$2
        local MAX_FILE_SIZE=$3
 
-       # shellcheck disable=SC2086
-       mkdir -p $ROOT/{a,b,c,d,e,f,g}/{h,i}
+       mkdir -p "$ROOT"/{a,b,c,d,e,f,g}/{h,i}
        DIRS=$(find "$ROOT")
 
        for DIR in $DIRS; do
                COUNT=$((RANDOM % MAX_DIR_SIZE))
 
-               # shellcheck disable=SC2034
-               for i in $(seq $COUNT); do
+               for _ in $(seq $COUNT); do
                        FILE=$(mktemp -p "$DIR")
                        SIZE=$((RANDOM % MAX_FILE_SIZE))
                        dd if=/dev/urandom of="$FILE" bs=1k \
@@ -334,9 +332,8 @@ fi
 for TAG in $POOL_TAGS; do
 
        if  [ "$TAG" = "all" ]; then
-               # shellcheck disable=SC2010
-               ALL_TAGS=$(ls "$IMAGES_DIR" | grep "tar.bz2" | \
-                   sed 's/.tar.bz2//' | tr '\n' ' ')
+               ALL_TAGS=$(echo "$IMAGES_DIR"/*.tar.bz2 | \
+                   sed "s|$IMAGES_DIR/||g;s|.tar.bz2||g")
                NEW_TAGS="$NEW_TAGS $ALL_TAGS"
        else
                NEW_TAGS="$NEW_TAGS $TAG"
index f2eff6e940964f7de4b4f509f3bbce423c77a78f..546e7001776db967bb613edebf2792f278bf62e4 100755 (executable)
@@ -91,8 +91,8 @@ esac
 
 function core_file
 {
-       # shellcheck disable=SC2012 disable=2086
-        printf "%s" "$(ls -tr1 $coreglob 2> /dev/null | head -1)"
+       # shellcheck disable=SC2012,SC2086
+       ls -tr1 $coreglob 2>/dev/null | head -1
 }
 
 function core_prog
@@ -100,8 +100,7 @@ function core_prog
        prog=$ZTEST
        core_id=$($GDB --batch -c "$1" | grep "Core was generated by" | \
            tr  \' ' ')
-       # shellcheck disable=SC2076
-       if [[ "$core_id" =~ "zdb "  ]]; then
+       if [[ "$core_id" == *"zdb "* ]]; then
                prog=$ZDB
        fi
        printf "%s" "$prog"
@@ -303,8 +302,7 @@ while [[ $timeout -eq 0 ]] || [[ $curtime -le $((starttime + timeout)) ]]; do
        zopt="$zopt -s $size"
        zopt="$zopt -f $workdir"
 
-       # shellcheck disable=SC2124
-       cmd="$ZTEST $zopt $@"
+       cmd="$ZTEST $zopt $*"
        desc="$(date '+%m/%d %T') $cmd"
        echo "$desc" | tee -a ztest.history
        echo "$desc" >>ztest.out
index d4194a5b8f5bf4b2ea6d65dc12b5683e83da8290..595eacf5b4b00d25ec7bc1a73b5cb70f6ce21609 100755 (executable)
@@ -102,8 +102,7 @@ function do_dup_test
 
                # Read the file a few times to generate some
                # duplicate errors of the same blocks
-               # shellcheck disable=SC2034
-               for i in {1..15}; do
+               for _ in {1..15}; do
                        dd if=$FILEPATH of=/dev/null bs=128K > /dev/null 2>&1
                done
                log_must zinject -c all
index b8d8ae8859da6224745ea7433c0bb52bcb900601..d8181f2e8792248b7788edd0a790669740c547f4 100755 (executable)
@@ -1,4 +1,5 @@
 #!/usr/bin/env bash
+# shellcheck disable=SC1004
 
 #
 # This file and its contents are supplied under the terms of the
@@ -24,38 +25,37 @@ zfs_kstats="/proc/spl/kstat/zfs"
 
 function get_prefetch_ios
 {
-        typeset -l data_misses=`awk '$1 == "prefetch_data_misses" \
-            { print $3 }' $zfs_kstats/arcstats`
-        typeset -l metadata_misses=`awk '$1 == "prefetch_metadata_misses" \
-            { print $3 }' $zfs_kstats/arcstats`
-        typeset -l total_misses=$(( $data_misses + $metadata_misses ))
+       typeset -l data_misses="$(awk '$1 == "prefetch_data_misses" \
+           { print $3; exit }' "$zfs_kstats/arcstats")"
+       typeset -l metadata_misses="$(awk '$1 == "prefetch_metadata_misses" \
+           { print $3; exit }' "$zfs_kstats/arcstats")"
+       typeset -l total_misses=$(( data_misses + metadata_misses ))
 
-        echo $total_misses
+       echo "$total_misses"
 }
 
 function get_prefetched_demand_reads
 {
-       typeset -l demand_reads=`awk '$1 == "demand_hit_predictive_prefetch" \
-           { print $3 }' $zfs_kstats/arcstats`
+       typeset -l demand_reads="$(awk '$1 == "demand_hit_predictive_prefetch" \
+           { print $3; exit }' "$zfs_kstats/arcstats")"
 
-       echo $demand_reads
+       echo "$demand_reads"
 }
 
 function get_async_upgrade_sync
 {
-       typeset -l sync_wait=`awk '$1 == "async_upgrade_sync" \
-           { print $3 }' $zfs_kstats/arcstats`
+       typeset -l sync_wait="$(awk '$1 == "async_upgrade_sync" \
+           { print $3; exit }' "$zfs_kstats/arcstats")"
 
-       echo $sync_wait
+       echo "$sync_wait"
 }
 
 if [ $# -ne 2 ]
 then
-       echo "Usage: `basename $0` <poolname> interval" >&2
+       echo "Usage: ${0##*/} poolname interval" >&2
        exit 1
 fi
 
-poolname=$1
 interval=$2
 prefetch_ios=$(get_prefetch_ios)
 prefetched_demand_reads=$(get_prefetched_demand_reads)
@@ -64,19 +64,19 @@ async_upgrade_sync=$(get_async_upgrade_sync)
 while true
 do
        new_prefetch_ios=$(get_prefetch_ios)
-       printf "%u\n%-24s\t%u\n" $(date +%s) "prefetch_ios" \
-           $(( $new_prefetch_ios - $prefetch_ios ))
+       printf "%u\n%-24s\t%u\n" "$(date +%s)" "prefetch_ios" \
+           $(( new_prefetch_ios - prefetch_ios ))
        prefetch_ios=$new_prefetch_ios
 
        new_prefetched_demand_reads=$(get_prefetched_demand_reads)
        printf "%-24s\t%u\n" "prefetched_demand_reads" \
-           $(( $new_prefetched_demand_reads - $prefetched_demand_reads ))
+           $(( new_prefetched_demand_reads - prefetched_demand_reads ))
        prefetched_demand_reads=$new_prefetched_demand_reads
 
        new_async_upgrade_sync=$(get_async_upgrade_sync)
        printf "%-24s\t%u\n" "async_upgrade_sync" \
-           $(( $new_async_upgrade_sync - $async_upgrade_sync ))
+           $(( new_async_upgrade_sync - async_upgrade_sync ))
        async_upgrade_sync=$new_async_upgrade_sync
 
-       sleep $interval
+       sleep "$interval"
 done