]> granicus.if.org Git - zfs/commitdiff
Shellcheck cleanup for initrd scripts
authorKash Pande <kash@tripleback.net>
Thu, 22 Feb 2018 01:54:54 +0000 (20:54 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 23 Feb 2018 20:57:41 +0000 (12:57 -0800)
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Co-authored-by: Kash Pande <kash@tripleback.net>
Co-authored-by: Matthew Thode <mthode@mthode.org>
Signed-off-by: Kash Pande <kash@tripleback.net>
Signed-off-by: Matthew Thode <mthode@mthode.org>
Closes #7214

contrib/dracut/90zfs/export-zfs.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

index 8747c1cbce79405ec9f4409a15a5eb553d7e188f..892650383475a5c8774484f82fd381d3c7049bc0 100755 (executable)
@@ -3,9 +3,9 @@
 . /lib/dracut-zfs-lib.sh
 
 _do_zpool_export() {
-       local ret=0
-       local errs=""
-       local final="${1}"
+       ret=0
+       errs=""
+       final="${1}"
 
        info "ZFS: Exporting ZFS storage pools..."
        errs=$(export_all -F 2>&1)
index 5b6998b74a91977cf4c07897bc86e88caa260435..dae33d8a652e8135a25547f33ac908021bc05338 100755 (executable)
@@ -13,7 +13,7 @@ esac
 GENERATOR_FILE=/run/systemd/generator/sysroot.mount
 GENERATOR_EXTENSION=/run/systemd/generator/sysroot.mount.d/zfs-enhancement.conf
 
-if [ -e "$GENERATOR_FILE" -a -e "$GENERATOR_EXTENSION" ] ; then
+if [ -e "$GENERATOR_FILE" ] && [ -e "$GENERATOR_EXTENSION" ] ; then
        # If the ZFS sysroot.mount flag exists, the initial RAM disk configured
        # it to mount ZFS on root.  In that case, we bail early.  This flag
        # file gets created by the zfs-generator program upon successful run.
@@ -57,9 +57,9 @@ ZFS_POOL="${ZFS_DATASET%%/*}"
 
 if import_pool "${ZFS_POOL}" ; then
        # Load keys if we can or if we need to
-       if [ $(zpool list -H -o feature@encryption $(echo "${ZFS_POOL}" | awk -F\/ '{print $1}')) == 'active' ]; then
+       if [ $(zpool list -H -o feature@encryption $(echo "${ZFS_POOL}" | awk -F\/ '{print $1}')) = 'active' ]; then
                # if the root dataset has encryption enabled
-               ENCRYPTIONROOT=$(zfs get -H -o value encryptionroot ${ZFS_DATASET})
+               ENCRYPTIONROOT="$(zfs get -H -o value encryptionroot "${ZFS_DATASET}")"
                if ! [ "${ENCRYPTIONROOT}" = "-" ]; then
                        # decrypt them
                        ask_for_password \
index 6ca3165f45e4f130f4cd9fc1a062c9766addeeb8..9cf46d7543259e06234d5eb62a62b5513e0c7b62 100755 (executable)
@@ -3,16 +3,16 @@
 . /lib/dracut-lib.sh
 
 # Let the command line override our host id.
-spl_hostid=`getarg spl_hostid=`
+spl_hostid=$(getarg spl_hostid=)
 if [ -n "${spl_hostid}" ] ; then
        info "ZFS: Using hostid from command line: ${spl_hostid}"
-       AA=`echo ${spl_hostid} | cut -b 1,2`
-       BB=`echo ${spl_hostid} | cut -b 3,4`
-       CC=`echo ${spl_hostid} | cut -b 5,6`
-       DD=`echo ${spl_hostid} | cut -b 7,8`
-       printf "\x${DD}\x${CC}\x${BB}\x${AA}" >/etc/hostid
+       AA=$(echo "${spl_hostid}" | cut -b 1,2)
+       BB=$(echo "${spl_hostid}" | cut -b 3,4)
+       CC=$(echo "${spl_hostid}" | cut -b 5,6)
+       DD=$(echo "${spl_hostid}" | cut -b 7,8)
+       printf "\\x%s\\x%s\\x%s\\x%s" "${DD}" "${CC}" "${BB}" "${AA}" >/etc/hostid
 elif [ -f "/etc/hostid" ] ; then
-       info "ZFS: Using hostid from /etc/hostid: `hostid`"
+       info "ZFS: Using hostid from /etc/hostid: $(hostid)"
 else
        warn "ZFS: No hostid found on kernel command line or /etc/hostid."
        warn "ZFS: Pools may not import correctly."
index 8cc85a3d3809ec8014fbd4a91ec085808db55a3f..4446ed52ea738d7e492d73ee2ae6f5864df3ed70 100755 (executable)
@@ -59,4 +59,4 @@ echo "zfs-generator: writing extension for sysroot.mount to $GENERATOR_DIR"/sysr
 [ -d "$GENERATOR_DIR"/initrd-root-fs.target.requires ] || mkdir -p "$GENERATOR_DIR"/initrd-root-fs.target.requires
 ln -s ../sysroot.mount "$GENERATOR_DIR"/initrd-root-fs.target.requires/sysroot.mount
 
-echo "zfs-generator: finished" >> /dev/kmsg
+echo "zfs-generator: finished" >> /dev/kmsg
\ No newline at end of file
index 82666afd058fdf8a272711adeab1a31285baa7eb..23c07af9e86f4962c052dc8d2529aa1d63541904 100755 (executable)
@@ -5,16 +5,16 @@ command -v getargbool >/dev/null || {
     # Compatibility with older Dracut versions.
     # With apologies to the Dracut developers.
     getargbool() {
-        local _b
-        unset _b
-        local _default
+        if ! [ -z "$_b" ]; then
+                unset _b
+        fi
         _default="$1"; shift
         _b=$(getarg "$@")
-        [ $? -ne 0 -a -z "$_b" ] && _b="$_default"
+        [ $? -ne 0 ] &&  [ -z "$_b" ] && _b="$_default"
         if [ -n "$_b" ]; then
-            [ $_b = "0" ] && return 1
-            [ $_b = "no" ] && return 1
-            [ $_b = "off" ] && return 1
+            [ "$_b" = "0" ] && return 1
+            [ "$_b" = "no" ] && return 1
+            [ "$_b" = "off" ] && return 1
         fi
         return 0
     }
@@ -26,82 +26,82 @@ NEWLINE="
 
 ZPOOL_IMPORT_OPTS=""
 if getargbool 0 zfs_force -y zfs.force -y zfsforce ; then
-       warn "ZFS: Will force-import pools if necessary."
-       ZPOOL_IMPORT_OPTS="${ZPOOL_IMPORT_OPTS} -f"
+    warn "ZFS: Will force-import pools if necessary."
+    ZPOOL_IMPORT_OPTS="${ZPOOL_IMPORT_OPTS} -f"
 fi
 
 # find_bootfs
 #   returns the first dataset with the bootfs attribute.
 find_bootfs() {
-       IFS="${NEWLINE}"
-       for dataset in $(zpool list -H -o bootfs); do
-               case "${dataset}" in
-                       "" | "-")
-                               continue
-                               ;;
-                       "no pools available")
-                               IFS="${OLDIFS}"
-                               return 1
-                               ;;
-                       *)
-                               IFS="${OLDIFS}"
-                               echo "${dataset}"
-                               return 0
-                               ;;
-               esac
-       done
-
-       IFS="${OLDIFS}"
-       return 1
+    IFS="${NEWLINE}"
+    for dataset in $(zpool list -H -o bootfs); do
+        case "${dataset}" in
+            "" | "-")
+                continue
+                ;;
+            "no pools available")
+                IFS="${OLDIFS}"
+                return 1
+                ;;
+            *)
+                IFS="${OLDIFS}"
+                echo "${dataset}"
+                return 0
+                ;;
+        esac
+    done
+
+    IFS="${OLDIFS}"
+    return 1
 }
 
 # import_pool POOL
 #   imports the given zfs pool if it isn't imported already.
 import_pool() {
-       local pool="${1}"
+        pool="${1}"
 
-       if ! zpool list -H "${pool}" 2>&1 > /dev/null ; then
-               info "ZFS: Importing pool ${pool}..."
-               if ! zpool import -N ${ZPOOL_IMPORT_OPTS} "${pool}" ; then
-                       warn "ZFS: Unable to import pool ${pool}"
-                       return 1
-               fi
-       fi
+    if ! zpool list -H "${pool}" > /dev/null 2>&1; then
+        info "ZFS: Importing pool ${pool}..."
+        if ! zpool import -N ${ZPOOL_IMPORT_OPTS} "${pool}" ; then
+            warn "ZFS: Unable to import pool ${pool}"
+            return 1
+        fi
+    fi
 
-       return 0
+    return 0
 }
 
 # mount_dataset DATASET
 #   mounts the given zfs dataset.
 mount_dataset() {
-       local dataset="${1}"
-       local mountpoint="$(zfs get -H -o value mountpoint "${dataset}")"
+        dataset="${1}"
+    mountpoint="$(zfs get -H -o value mountpoint "${dataset}")"
 
-       # We need zfsutil for non-legacy mounts and not for legacy mounts.
-       if [ "${mountpoint}" = "legacy" ] ; then
-               mount -t zfs "${dataset}" "${NEWROOT}"
-       else
-               mount -o zfsutil -t zfs "${dataset}" "${NEWROOT}"
-       fi
+    # We need zfsutil for non-legacy mounts and not for legacy mounts.
+    if [ "${mountpoint}" = "legacy" ] ; then
+        mount -t zfs "${dataset}" "${NEWROOT}"
+    else
+        mount -o zfsutil -t zfs "${dataset}" "${NEWROOT}"
+    fi
 
-       return $?
+    return $?
 }
 
 # export_all OPTS
 #   exports all imported zfs pools.
 export_all() {
-       local opts="${@}"
-       local ret=0
-
-       IFS="${NEWLINE}"
-       for pool in `zpool list -H -o name` ; do
-               if zpool list -H "${pool}" 2>&1 > /dev/null ; then
-                       zpool export "${pool}" ${opts} || ret=$?
-               fi
-       done
-       IFS="${OLDIFS}"
-
-       return ${ret}
+        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=$?
+        fi
+    done
+    IFS="${OLDIFS}"
+
+    return ${ret}
 }
 
 # ask_for_password
@@ -124,12 +124,9 @@ export_all() {
 #   Turn off input echo before tty command is executed and turn on after.
 #   It's useful when password is read from stdin.
 ask_for_password() {
-    local cmd; local prompt; local tries=3
-    local ply_cmd; local ply_prompt; local ply_tries=3
-    local tty_cmd; local tty_prompt; local tty_tries=3
-    local ret
-
-    while [ $# -gt 0 ]; do
+    ply_tries=3
+    tty_tries=3
+    while [ "$#" -gt 0 ]; do
         case "$1" in
             --cmd) ply_cmd="$2"; tty_cmd="$2"; shift;;
             --ply-cmd) ply_cmd="$2"; shift;;
@@ -147,9 +144,9 @@ ask_for_password() {
 
     { flock -s 9;
         # Prompt for password with plymouth, if installed and running.
-        if type plymouth >/dev/null 2>&1 && plymouth --ping 2>/dev/null; then
+        if whereis plymouth >/dev/null 2>&1 && plymouth --ping 2>/dev/null; then
             plymouth ask-for-password \
-                --prompt "$ply_prompt" --number-of-tries=$ply_tries \
+                --prompt "$ply_prompt" --number-of-tries="$ply_tries" \
                 --command="$ply_cmd"
             ret=$?
         else
@@ -158,17 +155,17 @@ ask_for_password() {
                 stty -echo
             fi
 
-            local i=1
-            while [ $i -le $tty_tries ]; do
+            i=1
+            while [ "$i" -le "$tty_tries" ]; do
                 [ -n "$tty_prompt" ] && \
-                    printf "$tty_prompt [$i/$tty_tries]:" >&2
+                    printf "%s [%i/%i]:" "$tty_prompt" "$i" "$tty_tries" >&2
                 eval "$tty_cmd" && ret=0 && break
                 ret=$?
-                i=$(($i+1))
+                i=$((i+1))
                 [ -n "$tty_prompt" ] && printf '\n' >&2
             done
-
-            [ "$tty_echo_off" = yes ] && stty $stty_orig
+            unset i
+            [ "$tty_echo_off" = yes ] && stty "$stty_orig"
         fi
     } 9>/.console_lock
 
index 6c1f423aea02c39c11c29dc17f2e740e3c6ff0c6..9e7adfc79786ba65ebbcad1ad67930037e2a90ab 100755 (executable)
@@ -1,47 +1,47 @@
-#!/bin/bash
+#!/bin/sh
 
 # only run this on systemd systems, we handle the decrypt in mount-zfs.sh in the mount hook otherwise
-[[ -e /bin/systemctl ]] || return 0
+[ -e /bin/systemctl ] || return 0
 
 # This script only gets executed on systemd systems, see mount-zfs.sh for non-systemd systems
 
 # import the libs now that we know the pool imported
 [ -f /lib/dracut-lib.sh ] && dracutlib=/lib/dracut-lib.sh
 [ -f /usr/lib/dracut/modules.d/99base/dracut-lib.sh ] && dracutlib=/usr/lib/dracut/modules.d/99base/dracut-lib.sh
+# shellcheck source=./lib-zfs.sh.in
 . "$dracutlib"
 
 # load the kernel command line vars
-[ -z "$root" ] && root=$(getarg root=)
+[ -z "$root" ] && root="$(getarg root=)"
 # If root is not ZFS= or zfs: or rootfstype is not zfs then we are not supposed to handle it.
-[ "${root##zfs:}" = "${root}" -a "${root##ZFS=}" = "${root}" -a "$rootfstype" != "zfs" ] && exit 0
+[ "${root##zfs:}" = "${root}" ] && [ "${root##ZFS=}" = "${root}" ] && [ "$rootfstype" != "zfs" ] && exit 0
 
 # There is a race between the zpool import and the pre-mount hooks, so we wait for a pool to be imported
 while true; do
     zpool list -H | grep -q -v '^$' && break
-    [[ $(systemctl is-failed zfs-import-cache.service) == 'failed' ]] && exit 1
-    [[ $(systemctl is-failed zfs-import-scan.service) == 'failed' ]] && exit 1
+    [ "$(systemctl is-failed zfs-import-cache.service)" = 'failed' ] && exit 1
+    [ "$(systemctl is-failed zfs-import-scan.service)" = 'failed' ] && exit 1
     sleep 0.1s
 done
 
 # run this after import as zfs-import-cache/scan service is confirmed good
-if [[ "${root}" = "zfs:AUTO" ]] ; then
-    root=$(zpool list -H -o bootfs | awk '$1 != "-" {print; exit}')
+if [ "${root}" = "zfs:AUTO" ] ; then
+    root="$(zpool list -H -o bootfs | awk '$1 != "-" {print; exit}')"
 else
     root="${root##zfs:}"
     root="${root##ZFS=}"
 fi
 
 # if pool encryption is active and the zfs command understands '-o encryption'
-if [[ $(zpool list -H -o feature@encryption $(echo "${root}" | awk -F\/ '{print $1}')) == 'active' ]]; then
+if [ "$(zpool list -H -o feature@encryption $(echo "${root}" | awk -F\/ '{print $1}'))" = 'active' ]; then
     # if the root dataset has encryption enabled
-    ENCRYPTIONROOT=$(zfs get -H -o value encryptionroot ${ZFS_DATASET})
+    ENCRYPTIONROOT=$(zfs get -H -o value encryptionroot "${root}")
     if ! [ "${ENCRYPTIONROOT}" = "-" ]; then
         # decrypt them
         TRY_COUNT=5
-        while [ $TRY_COUNT != 0 ]; do
-            zfs load-key "${ENCRYPTIONROOT}" <<< $(systemd-ask-password "Encrypted ZFS password for ${root}: ")
-            [[ $? == 0 ]] && break
-            ((TRY_COUNT-=1))
+        while [ $TRY_COUNT -gt 0 ]; do
+            systemd-ask-password "Encrypted ZFS password for ${root}" --no-tty | zfs load-key "${ENCRYPTIONROOT}" && break
+            TRY_COUNT=$((TRY_COUNT - 1))
         done
     fi
 fi