#8 Mass update fixing issues found with shellcheck
Closed 2 years ago by kasong. Opened 2 years ago by kasong.
rpms/ kasong/kexec-tools devel-shell  into  rawhide

file modified
+6 -10
@@ -14,9 +14,8 @@ 

  . /lib/kdump-lib.sh

  . /lib/kdump-logger.sh

  

- #initiate the kdump logger

- dlog_init

- if [ $? -ne 0 ]; then

+ # initiate the kdump logger

+ if ! dlog_init; then

          echo "failed to initiate the kdump logger."

          exit 1

  fi
@@ -30,8 +29,7 @@ 

  

  early_kdump_load()

  {

-     check_kdump_feasibility

-     if [ $? -ne 0 ]; then

+     if ! check_kdump_feasibility; then

          return 1

      fi

  
@@ -40,8 +38,7 @@ 

          return 1

      fi

  

-     check_current_kdump_status

-     if [ $? == 0 ]; then

+     if check_current_kdump_status; then

          return 1

      fi

  
@@ -61,10 +58,9 @@ 

  	--command-line=$EARLY_KDUMP_CMDLINE --initrd=$EARLY_KDUMP_INITRD \

  	$EARLY_KDUMP_KERNEL"

  

-     $KEXEC ${EARLY_KEXEC_ARGS} $standard_kexec_args \

+     if $KEXEC $EARLY_KEXEC_ARGS $standard_kexec_args \

          --command-line="$EARLY_KDUMP_CMDLINE" \

-         --initrd=$EARLY_KDUMP_INITRD $EARLY_KDUMP_KERNEL

-     if [ $? == 0 ]; then

+         --initrd=$EARLY_KDUMP_INITRD $EARLY_KDUMP_KERNEL; then

          dinfo "kexec: loaded early-kdump kernel"

          return 0

      else

file modified
+2 -2
@@ -1,7 +1,7 @@ 

  #!/bin/sh

  #

- # The main kdump routine in capture kernel

- #

+ # The main kdump routine in capture kernel, bash may not be the

+ # default shell. Any code added must be POSIX compliant.

  

  . /lib/dracut-lib.sh

  . /lib/kdump-logger.sh

file modified
+18 -19
@@ -84,14 +84,13 @@ 

      fi

  }

  

- # $1: nmcli connection show output

  kdump_setup_dns() {

      local _netdev="$1"

-     local _nm_show_cmd="$2"

+     local _conpath="$2"

      local _nameserver _dns _tmp array

      local _dnsfile=${initdir}/etc/cmdline.d/42dns.conf

  

-     _tmp=$(get_nmcli_value_by_field "$_nm_show_cmd" "IP4.DNS")

+     _tmp=$(get_nmcli_field_by_conpath "IP4.DNS" "$_conpath")

      # shellcheck disable=SC2206

      array=(${_tmp//|/ })

      if [[ ${array[*]} ]]; then
@@ -355,7 +354,7 @@ 

          _dev=${_dev##*/}

          _kdumpdev=$_dev

          if kdump_is_bond "$_dev"; then

-             (kdump_setup_bond "$_dev" "$(get_nmcli_connection_show_cmd_by_ifname "$_dev")") || exit 1

+             (kdump_setup_bond "$_dev" "$(get_nmcli_connection_apath_by_ifname "$_dev")") || exit 1

          elif kdump_is_team "$_dev"; then

              kdump_setup_team "$_dev"

          elif kdump_is_vlan "$_dev"; then
@@ -375,7 +374,7 @@ 

  #     bond=bond0:eth0,eth1:mode=balance-rr

  kdump_setup_bond() {

      local _netdev="$1"

-     local _nm_show_cmd="$2"

+     local _conpath="$2"

      local _dev _mac _slaves _kdumpdev _bondoptions

      for _dev in $(cat "/sys/class/net/$_netdev/bonding/slaves"); do

          _mac=$(kdump_get_perm_addr "$_dev")
@@ -385,7 +384,7 @@ 

      done

      echo -n " bond=$_netdev:${_slaves%,}" >> "${initdir}/etc/cmdline.d/42bond.conf"

  

-     _bondoptions=$(get_nmcli_value_by_field "$_nm_show_cmd" "bond.options")

+     _bondoptions=$(get_nmcli_field_by_conpath "bond.options" "$_conpath")

  

      if [[ -z $_bondoptions ]]; then

          dwarning "Failed to get bond configuration via nmlci output. Now try sourcing ifcfg script."
@@ -436,7 +435,7 @@ 

          derror "Vlan over bridge is not supported!"

          exit 1

      elif kdump_is_bond "$_phydev"; then

-         (kdump_setup_bond "$_phydev" "$(get_nmcli_connection_show_cmd_by_ifname "$_phydev")") || exit 1

+         (kdump_setup_bond "$_phydev" "$(get_nmcli_connection_apath_by_ifname "$_phydev")") || exit 1

          echo " vlan=$(kdump_setup_ifname "$_netdev"):$_phydev" > "${initdir}/etc/cmdline.d/43vlan.conf"

      else

          _kdumpdev="$(kdump_setup_ifname "$_phydev")"
@@ -474,18 +473,18 @@ 

  

  # setup s390 znet cmdline

  # $1: netdev (ifname)

- # $2: nmcli connection show output

+ # $2: nmcli connection path

  kdump_setup_znet() {

      local _netdev="$1"

-     local _nmcli_cmd="$2"

+     local _conpath="$2"

      local s390_prefix="802-3-ethernet.s390-"

      local _options=""

      local NETTYPE

      local SUBCHANNELS

  

-     NETTYPE=$(get_nmcli_value_by_field "$_nmcli_cmd" "${s390_prefix}nettype")

-     SUBCHANNELS=$(get_nmcli_value_by_field "$_nmcli_cmd" "${s390_prefix}subchannels")

-     _options=$(get_nmcli_value_by_field "$_nmcli_cmd" "${s390_prefix}options")

+     NETTYPE=$(get_nmcli_field_by_conpath "${s390_prefix}nettype" "$_conpath")

+     SUBCHANNELS=$(get_nmcli_field_by_conpath "${s390_prefix}subchannels" "$_conpath")

+     _options=$(get_nmcli_field_by_conpath "${s390_prefix}options" "$_conpath")

  

      if [[ -z $NETTYPE || -z $SUBCHANNELS || -z $_options ]]; then

          dwarning "Failed to get znet configuration via nmlci output. Now try sourcing ifcfg script."
@@ -532,22 +531,22 @@ 

  # initramfs accessing giving destination

  # $1: destination host

  kdump_install_net() {

-     local _destaddr _srcaddr _route _netdev _nm_show_cmd kdumpnic

+     local _destaddr _srcaddr _route _netdev _conpath kdumpnic

      local _static _proto _ip_conf _ip_opts _ifname_opts

-     local _znet_netdev _nm_show_cmd_znet

+     local _znet_netdev _znet_conpath

  

      _destaddr=$(kdump_get_remote_ip "$1")

      _route=$(kdump_get_ip_route "$_destaddr")

      _srcaddr=$(kdump_get_ip_route_field "$_route" "src")

      _netdev=$(kdump_get_ip_route_field "$_route" "dev")

-     _nm_show_cmd=$(get_nmcli_connection_show_cmd_by_ifname "$_netdev")

+     _conpath=$(get_nmcli_connection_apath_by_ifname "$_netdev")

      _netmac=$(kdump_get_mac_addr "$_netdev")

      kdumpnic=$(kdump_setup_ifname "$_netdev")

  

      _znet_netdev=$(find_online_znet_device)

      if [[ -n $_znet_netdev ]]; then

-         _nm_show_cmd_znet=$(get_nmcli_connection_show_cmd_by_ifname "$_znet_netdev")

-         if ! (kdump_setup_znet "$_znet_netdev" "$_nm_show_cmd_znet"); then

+         _znet_conpath=$(get_nmcli_connection_apath_by_ifname "$_znet_netdev")

+         if ! (kdump_setup_znet "$_znet_netdev" "$_znet_conpath"); then

              derror "Failed to set up znet"

              exit 1

          fi
@@ -577,7 +576,7 @@ 

      if kdump_is_bridge "$_netdev"; then

          kdump_setup_bridge "$_netdev"

      elif kdump_is_bond "$_netdev"; then

-         (kdump_setup_bond "$_netdev" "$_nm_show_cmd") || exit 1

+         (kdump_setup_bond "$_netdev" "$_conpath") || exit 1

      elif kdump_is_team "$_netdev"; then

          kdump_setup_team "$_netdev"

      elif kdump_is_vlan "$_netdev"; then
@@ -587,7 +586,7 @@ 

          echo "$_ifname_opts" >> "$_ip_conf"

      fi

  

-     kdump_setup_dns "$_netdev" "$_nm_show_cmd"

+     kdump_setup_dns "$_netdev" "$_conpath"

  

      if [[ ! -f ${initdir}/etc/cmdline.d/50neednet.conf ]]; then

          # network-manager module needs this parameter

file modified
+40 -43
@@ -1,7 +1,7 @@ 

  #!/bin/sh

  #

- # Function and variables used in initramfs environment, POSIX compatible

- #

+ # The code in this file will be used in initramfs environment, bash may

+ # not be the default shell. Any code added must be POSIX compliant.

  

  DEFAULT_PATH="/var/crash/"

  KDUMP_CONFIG_FILE="/etc/kdump.conf"
@@ -9,9 +9,9 @@ 

  # Read kdump config in well formated style

  kdump_read_conf()

  {

-     # Following steps are applied in order: strip trailing comment, strip trailing space,

-     # strip heading space, match non-empty line, remove duplicated spaces between conf name and value

-     [ -f "$KDUMP_CONFIG_FILE" ] && sed -n -e "s/#.*//;s/\s*$//;s/^\s*//;s/\(\S\+\)\s*\(.*\)/\1 \2/p" $KDUMP_CONFIG_FILE

+ 	# Following steps are applied in order: strip trailing comment, strip trailing space,

+ 	# strip heading space, match non-empty line, remove duplicated spaces between conf name and value

+ 	[ -f "$KDUMP_CONFIG_FILE" ] && sed -n -e "s/#.*//;s/\s*$//;s/^\s*//;s/\(\S\+\)\s*\(.*\)/\1 \2/p" $KDUMP_CONFIG_FILE

  }

  

  # Retrieves config value defined in kdump.conf
@@ -25,48 +25,51 @@ 

  

  is_mounted()

  {

-     findmnt -k -n $1 &>/dev/null

+ 	findmnt -k -n "$1" > /dev/null 2>&1

  }

  

+ # $1: info type

+ # $2: mount source type

+ # $3: mount source

+ # $4: extra args

  get_mount_info()

  {

-     local _info_type=$1 _src_type=$2 _src=$3; shift 3

-     local _info=$(findmnt -k -n -r -o $_info_type --$_src_type $_src $@)

+ 	__kdump_mnt=$(findmnt -k -n -r -o "$1" "--$2" "$3" $4)

  

-     [ -z "$_info" ] && [ -e "/etc/fstab" ] && _info=$(findmnt -s -n -r -o $_info_type --$_src_type $_src $@)

+ 	[ -z "$__kdump_mnt" ] && [ -e "/etc/fstab" ] && __kdump_mnt=$(findmnt -s -n -r -o "$1" "--$2" "$3" $4)

  

-     echo $_info

+ 	echo "$__kdump_mnt"

  }

  

  is_ipv6_address()

  {

-     echo $1 | grep -q ":"

+ 	echo "$1" | grep -q ":"

  }

  

  is_fs_type_nfs()

  {

-     [ "$1" = "nfs" ] || [ "$1" = "nfs4" ]

+ 	[ "$1" = "nfs" ] || [ "$1" = "nfs4" ]

  }

  

  # If $1 contains dracut_args "--mount", return <filesystem type>

  get_dracut_args_fstype()

  {

-     echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut -d' ' -f3

+ 	echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut -d' ' -f3

  }

  

  # If $1 contains dracut_args "--mount", return <device>

  get_dracut_args_target()

  {

-     echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut -d' ' -f1

+ 	echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut -d' ' -f1

  }

  

  get_save_path()

  {

-     local _save_path=$(kdump_get_conf_val path)

-     [ -z "$_save_path" ] && _save_path=$DEFAULT_PATH

+ 	__kdump_path=$(kdump_get_conf_val path)

+ 	[ -z "$__kdump_path" ] && __kdump_path=$DEFAULT_PATH

  

-     # strip the duplicated "/"

-     echo $_save_path | tr -s /

+ 	# strip the duplicated "/"

+ 	echo "$__kdump_path" | tr -s /

  }

  

  get_root_fs_device()
@@ -77,56 +80,50 @@ 

  # Return the current underlying device of a path, ignore bind mounts

  get_target_from_path()

  {

-     local _target

- 

-     _target=$(df $1 2>/dev/null | tail -1 |  awk '{print $1}')

-     [[ "$_target" == "/dev/root" ]] && [[ ! -e /dev/root ]] && _target=$(get_root_fs_device)

-     echo $_target

+ 	__kdump_target=$(df "$1" 2> /dev/null | tail -1 | awk '{print $1}')

+ 	[ "$__kdump_target" = "/dev/root" ] && [ ! -e /dev/root ] && __kdump_target=$(get_root_fs_device)

+ 	echo "$__kdump_target"

  }

  

  get_fs_type_from_target()

  {

-     get_mount_info FSTYPE source $1 -f

+ 	get_mount_info FSTYPE source "$1" -f

  }

  

  get_mntpoint_from_target()

  {

-     # --source is applied to ensure non-bind mount is returned

-     get_mount_info TARGET source $1 -f

+ 	# --source is applied to ensure non-bind mount is returned

+ 	get_mount_info TARGET source "$1" -f

  }

  

  is_ssh_dump_target()

  {

-     [[ $(kdump_get_conf_val ssh) == *@* ]]

+ 	kdump_get_conf_val ssh | grep -q @

  }

  

  is_raw_dump_target()

  {

-     [[ $(kdump_get_conf_val raw) ]]

+ 	[ -n "$(kdump_get_conf_val raw)" ]

  }

  

  is_nfs_dump_target()

  {

-     if [[ $(kdump_get_conf_val nfs) ]]; then

-         return 0;

-     fi

- 

-     if is_fs_type_nfs $(get_dracut_args_fstype "$(kdump_get_conf_val dracut_args)"); then

-         return 0

-     fi

+ 	if [ -n "$(kdump_get_conf_val nfs)" ]; then

+ 		return 0

+ 	fi

  

-     local _save_path=$(get_save_path)

-     local _target=$(get_target_from_path $_save_path)

-     local _fstype=$(get_fs_type_from_target $_target)

+ 	if is_fs_type_nfs "$(get_dracut_args_fstype "$(kdump_get_conf_val dracut_args)")"; then

+ 		return 0

+ 	fi

  

-     if is_fs_type_nfs $_fstype; then

-         return 0

-     fi

+ 	if is_fs_type_nfs "$(get_fs_type_from_target "$(get_target_from_path "$(get_save_path)")")"; then

+ 		return 0

+ 	fi

  

-     return 1

+ 	return 1

  }

  

  is_fs_dump_target()

  {

-     [[ $(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix") ]]

+ 	[ -n "$(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix")" ]

  }

file modified
+594 -594
@@ -11,136 +11,141 @@ 

  

  is_fadump_capable()

  {

-     # Check if firmware-assisted dump is enabled

-     # if no, fallback to kdump check

-     if [ -f $FADUMP_ENABLED_SYS_NODE ]; then

-         rc=`cat $FADUMP_ENABLED_SYS_NODE`

-         [ $rc -eq 1 ] && return 0

-     fi

-     return 1

+ 	# Check if firmware-assisted dump is enabled

+ 	# if no, fallback to kdump check

+ 	if [[ -f $FADUMP_ENABLED_SYS_NODE ]]; then

+ 		rc=$(< $FADUMP_ENABLED_SYS_NODE)

+ 		[[ $rc -eq 1 ]] && return 0

+ 	fi

+ 	return 1

  }

  

- is_squash_available() {

-     for kmodule in squashfs overlay loop; do

-         if [ -z "$KDUMP_KERNELVER" ]; then

-             modprobe --dry-run $kmodule &>/dev/null || return 1

-         else

-             modprobe -S $KDUMP_KERNELVER --dry-run $kmodule &>/dev/null || return 1

-         fi

-     done

+ is_squash_available()

+ {

+ 	for kmodule in squashfs overlay loop; do

+ 		if [[ -z $KDUMP_KERNELVER ]]; then

+ 			modprobe --dry-run $kmodule &> /dev/null || return 1

+ 		else

+ 			modprobe -S "$KDUMP_KERNELVER" --dry-run $kmodule &> /dev/null || return 1

+ 		fi

+ 	done

  }

  

- perror_exit() {

-     derror "$@"

-     exit 1

+ perror_exit()

+ {

+ 	derror "$@"

+ 	exit 1

  }

  

  # Check if fence kdump is configured in Pacemaker cluster

  is_pcs_fence_kdump()

  {

-     # no pcs or fence_kdump_send executables installed?

-     type -P pcs > /dev/null || return 1

-     [ -x $FENCE_KDUMP_SEND ] || return 1

+ 	# no pcs or fence_kdump_send executables installed?

+ 	type -P pcs > /dev/null || return 1

+ 	[[ -x $FENCE_KDUMP_SEND ]] || return 1

  

-     # fence kdump not configured?

-     (pcs cluster cib | grep 'type="fence_kdump"') &> /dev/null || return 1

+ 	# fence kdump not configured?

+ 	(pcs cluster cib | grep 'type="fence_kdump"') &> /dev/null || return 1

  }

  

  # Check if fence_kdump is configured using kdump options

  is_generic_fence_kdump()

  {

-     [ -x $FENCE_KDUMP_SEND ] || return 1

+ 	[[ -x $FENCE_KDUMP_SEND ]] || return 1

  

-     [[ $(kdump_get_conf_val fence_kdump_nodes) ]]

+ 	[[ $(kdump_get_conf_val fence_kdump_nodes) ]]

  }

  

- to_dev_name() {

-     local dev="${1//\"/}"

+ to_dev_name()

+ {

+ 	local dev="${1//\"/}"

  

-     case "$dev" in

-     UUID=*)

-         dev=`blkid -U "${dev#UUID=}"`

-         ;;

-     LABEL=*)

-         dev=`blkid -L "${dev#LABEL=}"`

-         ;;

-     esac

-     echo $dev

+ 	case "$dev" in

+ 	UUID=*)

+ 		blkid -U "${dev#UUID=}"

+ 		;;

+ 	LABEL=*)

+ 		blkid -L "${dev#LABEL=}"

+ 		;;

+ 	*)

+ 		echo "$dev"

+ 		;;

+ 	esac

  }

  

  is_user_configured_dump_target()

  {

-     [[ $(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|raw\|nfs\|ssh") ]] || is_mount_in_dracut_args

+ 	[[ $(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|raw\|nfs\|ssh") ]] || is_mount_in_dracut_args

  }

  

  get_user_configured_dump_disk()

  {

-     local _target

+ 	local _target

  

-     _target=$(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|raw")

-     [ -n "$_target" ] && echo $_target && return

+ 	_target=$(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|raw")

+ 	[[ -n $_target ]] && echo "$_target" && return

  

-     _target=$(get_dracut_args_target "$(kdump_get_conf_val "dracut_args")")

-     [ -b "$_target" ] && echo $_target

+ 	_target=$(get_dracut_args_target "$(kdump_get_conf_val "dracut_args")")

+ 	[[ -b $_target ]] && echo "$_target"

  }

  

  get_block_dump_target()

  {

-     local _target _path

+ 	local _target _path

  

-     if is_ssh_dump_target || is_nfs_dump_target; then

-         return

-     fi

+ 	if is_ssh_dump_target || is_nfs_dump_target; then

+ 		return

+ 	fi

  

-     _target=$(get_user_configured_dump_disk)

-     [ -n "$_target" ] && echo $(to_dev_name $_target) && return

+ 	_target=$(get_user_configured_dump_disk)

+ 	[[ -n $_target ]] && to_dev_name "$_target" && return

  

-     # Get block device name from local save path

-     _path=$(get_save_path)

-     _target=$(get_target_from_path $_path)

-     [ -b "$_target" ] && echo $(to_dev_name $_target)

+ 	# Get block device name from local save path

+ 	_path=$(get_save_path)

+ 	_target=$(get_target_from_path "$_path")

+ 	[[ -b $_target ]] && to_dev_name "$_target"

  }

  

  is_dump_to_rootfs()

  {

-     [[ $(kdump_get_conf_val "failure_action|default") == dump_to_rootfs ]]

+ 	[[ $(kdump_get_conf_val "failure_action|default") == dump_to_rootfs ]]

  }

  

  get_failure_action_target()

  {

-     local _target

+ 	local _target

  

-     if is_dump_to_rootfs; then

-         # Get rootfs device name

-         _target=$(get_root_fs_device)

-         [ -b "$_target" ] && echo $(to_dev_name $_target) && return

-         # Then, must be nfs root

-         echo "nfs"

-     fi

+ 	if is_dump_to_rootfs; then

+ 		# Get rootfs device name

+ 		_target=$(get_root_fs_device)

+ 		[[ -b $_target ]] && to_dev_name "$_target" && return

+ 		# Then, must be nfs root

+ 		echo "nfs"

+ 	fi

  }

  

  # Get kdump targets(including root in case of dump_to_rootfs).

  get_kdump_targets()

  {

-     local _target _root

-     local kdump_targets

+ 	local _target _root

+ 	local kdump_targets

  

-     _target=$(get_block_dump_target)

-     if [ -n "$_target" ]; then

-         kdump_targets=$_target

-     elif is_ssh_dump_target; then

-         kdump_targets="ssh"

-     else

-         kdump_targets="nfs"

-     fi

+ 	_target=$(get_block_dump_target)

+ 	if [[ -n $_target ]]; then

+ 		kdump_targets=$_target

+ 	elif is_ssh_dump_target; then

+ 		kdump_targets="ssh"

+ 	else

+ 		kdump_targets="nfs"

+ 	fi

  

-     # Add the root device if dump_to_rootfs is specified.

-     _root=$(get_failure_action_target)

-     if [ -n "$_root" -a "$kdump_targets" != "$_root" ]; then

-         kdump_targets="$kdump_targets $_root"

-     fi

+ 	# Add the root device if dump_to_rootfs is specified.

+ 	_root=$(get_failure_action_target)

+ 	if [[ -n $_root ]] && [[ $kdump_targets != "$_root" ]]; then

+ 		kdump_targets="$kdump_targets $_root"

+ 	fi

  

-     echo "$kdump_targets"

+ 	echo "$kdump_targets"

  }

  

  # Return the bind mount source path, return the path itself if it's not bind mounted
@@ -157,124 +162,130 @@ 

  # part is the bind mounted directory which quotes by bracket "[]".

  get_bind_mount_source()

  {

-     local _mnt=$(df $1 | tail -1 | awk '{print $NF}')

-     local _path=${1#$_mnt}

+ 	local _mnt _path _src _opt _fstype

+ 	local _fsroot _src_nofsroot

+ 

+ 	_mnt=$(df "$1" | tail -1 | awk '{print $NF}')

+ 	_path=${1#$_mnt}

  

-     local _src=$(get_mount_info SOURCE target $_mnt -f)

-     local _opt=$(get_mount_info OPTIONS target $_mnt -f)

-     local _fstype=$(get_mount_info FSTYPE target $_mnt -f)

+ 	_src=$(get_mount_info SOURCE target "$_mnt" -f)

+ 	_opt=$(get_mount_info OPTIONS target "$_mnt" -f)

+ 	_fstype=$(get_mount_info FSTYPE target "$_mnt" -f)

  

-     # bind mount in fstab

-     if [[ -d "$_src" ]] && [[ "$_fstype" = none ]] && (echo "$_opt" | grep -q "\bbind\b"); then

-         echo $_src$_path && return

-     fi

+ 	# bind mount in fstab

+ 	if [[ -d $_src ]] && [[ $_fstype == none ]] && (echo "$_opt" | grep -q "\bbind\b"); then

+ 		echo "$_src$_path" && return

+ 	fi

  

-     # direct mount

-     local _src_nofsroot=$(get_mount_info SOURCE target $_mnt -v -f)

-     if [[ $_src_nofsroot = $_src ]]; then

-         echo $_mnt$_path && return

-     fi

+ 	# direct mount

+ 	_src_nofsroot=$(get_mount_info SOURCE target "$_mnt" -v -f)

+ 	if [[ $_src_nofsroot == "$_src" ]]; then

+ 		echo "$_mnt$_path" && return

+ 	fi

  

-     local _fsroot=${_src#$_src_nofsroot[}

-     _fsroot=${_fsroot%]}

-     _mnt=$(get_mount_info TARGET source $_src_nofsroot -f)

+ 	_fsroot=${_src#${_src_nofsroot}[}

+ 	_fsroot=${_fsroot%]}

+ 	_mnt=$(get_mount_info TARGET source "$_src_nofsroot" -f)

  

-     # for btrfs, _fsroot will also contain the subvol value as well, strip it

-     if [[ "$_fstype" = btrfs ]]; then

-         local _subvol

-         _subvol=${_opt#*subvol=}

-         _subvol=${_subvol%,*}

-         _fsroot=${_fsroot#$_subvol}

-     fi

-     echo $_mnt$_fsroot$_path

+ 	# for btrfs, _fsroot will also contain the subvol value as well, strip it

+ 	if [[ $_fstype == btrfs ]]; then

+ 		local _subvol

+ 		_subvol=${_opt#*subvol=}

+ 		_subvol=${_subvol%,*}

+ 		_fsroot=${_fsroot#$_subvol}

+ 	fi

+ 	echo "$_mnt$_fsroot$_path"

  }

  

  get_mntopt_from_target()

  {

-     get_mount_info OPTIONS source $1 -f

+ 	get_mount_info OPTIONS source "$1" -f

  }

  

  # Get the path where the target will be mounted in kdump kernel

  # $1: kdump target device

  get_kdump_mntpoint_from_target()

  {

-     local _mntpoint=$(get_mntpoint_from_target $1)

+ 	local _mntpoint

  

-     # mount under /sysroot if dump to root disk or mount under

-     # mount under /kdumproot if dump target is not mounted in first kernel

-     # mount under /kdumproot/$_mntpoint in other cases in 2nd kernel.

-     # systemd will be in charge to umount it.

-     if [ -z "$_mntpoint" ];then

-         _mntpoint="/kdumproot"

-     else

-         if [ "$_mntpoint" = "/" ];then

-             _mntpoint="/sysroot"

-         else

-             _mntpoint="/kdumproot/$_mntpoint"

-         fi

-     fi

+ 	_mntpoint=$(get_mntpoint_from_target "$1")

+ 	# mount under /sysroot if dump to root disk or mount under

+ 	# mount under /kdumproot if dump target is not mounted in first kernel

+ 	# mount under /kdumproot/$_mntpoint in other cases in 2nd kernel.

+ 	# systemd will be in charge to umount it.

+ 	if [[ -z $_mntpoint ]]; then

+ 		_mntpoint="/kdumproot"

+ 	else

+ 		if [[ $_mntpoint == "/" ]]; then

+ 			_mntpoint="/sysroot"

+ 		else

+ 			_mntpoint="/kdumproot/$_mntpoint"

+ 		fi

+ 	fi

  

-     # strip duplicated "/"

-     echo $_mntpoint | tr -s "/"

+ 	# strip duplicated "/"

+ 	echo $_mntpoint | tr -s "/"

  }

  

- kdump_get_persistent_dev() {

-     local dev="${1//\"/}"

+ kdump_get_persistent_dev()

+ {

+ 	local dev="${1//\"/}"

  

-     case "$dev" in

-     UUID=*)

-         dev=`blkid -U "${dev#UUID=}"`

-         ;;

-     LABEL=*)

-         dev=`blkid -L "${dev#LABEL=}"`

-         ;;

-     esac

-     echo $(get_persistent_dev "$dev")

+ 	case "$dev" in

+ 	UUID=*)

+ 		dev=$(blkid -U "${dev#UUID=}")

+ 		;;

+ 	LABEL=*)

+ 		dev=$(blkid -L "${dev#LABEL=}")

+ 		;;

+ 	esac

+ 	echo $(get_persistent_dev "$dev")

  }

  

  is_atomic()

  {

-     grep -q "ostree" /proc/cmdline

+ 	grep -q "ostree" /proc/cmdline

  }

  

  # get ip address or hostname from nfs/ssh config value

  get_remote_host()

  {

-     local _config_val=$1

+ 	local _config_val=$1

  

-     # ipv6 address in kdump.conf is around with "[]",

-     # factor out the ipv6 address

-     _config_val=${_config_val#*@}

-     _config_val=${_config_val%:/*}

-     _config_val=${_config_val#[}

-     _config_val=${_config_val%]}

-     echo $_config_val

+ 	# ipv6 address in kdump.conf is around with "[]",

+ 	# factor out the ipv6 address

+ 	_config_val=${_config_val#*@}

+ 	_config_val=${_config_val%:/*}

+ 	_config_val=${_config_val#[}

+ 	_config_val=${_config_val%]}

+ 	echo "$_config_val"

  }

  

  is_hostname()

  {

-     local _hostname=`echo $1 | grep ":"`

+ 	local _hostname

  

-     if [ -n "$_hostname" ]; then

-         return 1

-     fi

-     echo $1 | grep -q "[a-zA-Z]"

+ 	_hostname=$(echo "$1" | grep ":")

+ 	if [[ -n $_hostname ]]; then

+ 		return 1

+ 	fi

+ 	echo "$1" | grep -q "[a-zA-Z]"

  }

  

  # Copied from "/etc/sysconfig/network-scripts/network-functions"

  get_hwaddr()

  {

-     if [ -f "/sys/class/net/${1}/address" ]; then

-         awk '{ print toupper($0) }' < /sys/class/net/${1}/address

-     elif [ -d "/sys/class/net/${1}" ]; then

-        LC_ALL= LANG= ip -o link show ${1} 2>/dev/null | \

-             awk '{ print toupper(gensub(/.*link\/[^ ]* ([[:alnum:]:]*).*/,

+ 	if [[ -f "/sys/class/net/$1/address" ]]; then

+ 		awk '{ print toupper($0) }' < "/sys/class/net/$1/address"

+ 	elif [[ -d "/sys/class/net/$1" ]]; then

+ 		LC_ALL="" LANG="" ip -o link show "$1" 2> /dev/null |

+ 			awk '{ print toupper(gensub(/.*link\/[^ ]* ([[:alnum:]:]*).*/,

                                          "\\1", 1)); }'

-     fi

+ 	fi

  }

  

- 

  # Get value by a field using "nmcli -g"

+ # Usage: get_nmcli_value_by_field <field> <nmcli command>

  #

  # "nmcli --get-values" allows us to retrive value(s) by field, for example,

  # nmcli --get-values <field> connection show /org/freedesktop/NetworkManager/ActiveConnection/1
@@ -285,12 +296,16 @@ 

  #   bond.options                           "mode=balance-rr"

  get_nmcli_value_by_field()

  {

-     local _nm_show_cmd=$1

-     local _field=$2

+ 	LANG=C nmcli --get-values "$@"

+ }

  

-     local val=$(LANG=C nmcli --get-values $_field $_nm_show_cmd)

+ # Get nmcli field value of an connection apath (a D-Bus active connection path)

+ # Usage: get_nmcli_field_by_apath <field> <apath>

+ get_nmcli_field_by_conpath()

+ {

+ 	local _field=$1 _apath=$2

  

-     echo -n "$val"

+ 	get_nmcli_value_by_field "$_field" connection show "$_apath"

  }

  

  # Get nmcli connection apath (a D-Bus active connection path ) by ifname
@@ -299,146 +314,133 @@ 

  #  $ nmcli connection show $apath

  get_nmcli_connection_apath_by_ifname()

  {

-     local _ifname=$1

-     local _nm_show_cmd="device show $_ifname"

+ 	local _ifname=$1

  

-     local _apath=$(get_nmcli_value_by_field "$_nm_show_cmd" "GENERAL.CON-PATH")

- 

-     echo -n "$_apath"

- }

- 

- # Get nmcli connection show cmd by ifname

- #

- # "$_apath" is supposed to not contain any chracter that

- # need to be escapded, e.g. space. Otherwise get_nmcli_value_by_field

- # would fail.

- get_nmcli_connection_show_cmd_by_ifname()

- {

-     local _ifname="$1"

-     local _apath=$(get_nmcli_connection_apath_by_ifname "$_ifname")

-     local _nm_show_cmd="connection show $_apath"

- 

-     echo -n "$_nm_show_cmd"

+ 	get_nmcli_value_by_field "GENERAL.CON-PATH" device show "$_ifname"

  }

  

  get_ifcfg_by_device()

  {

-     grep -E -i -l "^[[:space:]]*DEVICE=\"*${1}\"*[[:space:]]*$" \

-          /etc/sysconfig/network-scripts/ifcfg-* 2>/dev/null | head -1

+ 	grep -E -i -l "^[[:space:]]*DEVICE=\"*${1}\"*[[:space:]]*$" \

+ 		/etc/sysconfig/network-scripts/ifcfg-* 2> /dev/null | head -1

  }

  

  get_ifcfg_by_hwaddr()

  {

-     grep -E -i -l "^[[:space:]]*HWADDR=\"*${1}\"*[[:space:]]*$" \

-          /etc/sysconfig/network-scripts/ifcfg-* 2>/dev/null | head -1

+ 	grep -E -i -l "^[[:space:]]*HWADDR=\"*${1}\"*[[:space:]]*$" \

+ 		/etc/sysconfig/network-scripts/ifcfg-* 2> /dev/null | head -1

  }

  

  get_ifcfg_by_uuid()

  {

-     grep -E -i -l "^[[:space:]]*UUID=\"*${1}\"*[[:space:]]*$" \

-          /etc/sysconfig/network-scripts/ifcfg-* 2>/dev/null | head -1

+ 	grep -E -i -l "^[[:space:]]*UUID=\"*${1}\"*[[:space:]]*$" \

+ 		/etc/sysconfig/network-scripts/ifcfg-* 2> /dev/null | head -1

  }

  

  get_ifcfg_by_name()

  {

-     grep -E -i -l "^[[:space:]]*NAME=\"*${1}\"*[[:space:]]*$" \

-          /etc/sysconfig/network-scripts/ifcfg-* 2>/dev/null | head -1

+ 	grep -E -i -l "^[[:space:]]*NAME=\"*${1}\"*[[:space:]]*$" \

+ 		/etc/sysconfig/network-scripts/ifcfg-* 2> /dev/null | head -1

  }

  

  is_nm_running()

  {

-     [ "$(LANG=C nmcli -t --fields running general status 2>/dev/null)" = "running" ]

+ 	[[ "$(LANG=C nmcli -t --fields running general status 2> /dev/null)" == "running" ]]

  }

  

  is_nm_handling()

  {

-     LANG=C nmcli -t --fields device,state  dev status 2>/dev/null \

-           | grep -q "^\(${1}:connected\)\|\(${1}:connecting.*\)$"

+ 	LANG=C nmcli -t --fields device,state dev status 2> /dev/null |

+ 		grep -q "^\(${1}:connected\)\|\(${1}:connecting.*\)$"

  }

  

  # $1: netdev name

  get_ifcfg_nmcli()

  {

-     local nm_uuid nm_name

-     local ifcfg_file

+ 	local nm_uuid nm_name

+ 	local ifcfg_file

  

-     # Get the active nmcli config name of $1

-     if is_nm_running && is_nm_handling "${1}" ; then

-         # The configuration "uuid" and "name" generated by nm is wrote to

-         # the ifcfg file as "UUID=<nm_uuid>" and "NAME=<nm_name>".

-         nm_uuid=$(LANG=C nmcli -t --fields uuid,device c show --active 2>/dev/null \

-                   | grep "${1}" | head -1 | cut -d':' -f1)

-         nm_name=$(LANG=C nmcli -t --fields name,device c show --active 2>/dev/null \

-                   | grep "${1}" | head -1 | cut -d':' -f1)

-         ifcfg_file=$(get_ifcfg_by_uuid "${nm_uuid}")

-         [ -z "${ifcfg_file}" ] && ifcfg_file=$(get_ifcfg_by_name "${nm_name}")

-     fi

+ 	# Get the active nmcli config name of $1

+ 	if is_nm_running && is_nm_handling "${1}"; then

+ 		# The configuration "uuid" and "name" generated by nm is wrote to

+ 		# the ifcfg file as "UUID=<nm_uuid>" and "NAME=<nm_name>".

+ 		nm_uuid=$(LANG=C nmcli -t --fields uuid,device c show --active 2> /dev/null |

+ 			grep "${1}" | head -1 | cut -d':' -f1)

+ 		nm_name=$(LANG=C nmcli -t --fields name,device c show --active 2> /dev/null |

+ 			grep "${1}" | head -1 | cut -d':' -f1)

+ 		ifcfg_file=$(get_ifcfg_by_uuid "${nm_uuid}")

+ 		[[ -z ${ifcfg_file} ]] && ifcfg_file=$(get_ifcfg_by_name "${nm_name}")

+ 	fi

  

-     echo -n "${ifcfg_file}"

+ 	echo -n "${ifcfg_file}"

  }

  

  # $1: netdev name

  get_ifcfg_legacy()

  {

-     local ifcfg_file

+ 	local ifcfg_file hwaddr

  

-     ifcfg_file="/etc/sysconfig/network-scripts/ifcfg-${1}"

-     [ -f "${ifcfg_file}" ] && echo -n "${ifcfg_file}" && return

+ 	ifcfg_file="/etc/sysconfig/network-scripts/ifcfg-${1}"

+ 	[[ -f ${ifcfg_file} ]] && echo -n "${ifcfg_file}" && return

  

-     ifcfg_file=$(get_ifcfg_by_name "${1}")

-     [ -f "${ifcfg_file}" ] && echo -n "${ifcfg_file}" && return

+ 	ifcfg_file=$(get_ifcfg_by_name "${1}")

+ 	[[ -f ${ifcfg_file} ]] && echo -n "${ifcfg_file}" && return

  

-     local hwaddr=$(get_hwaddr "${1}")

-     if [ -n "$hwaddr" ]; then

-         ifcfg_file=$(get_ifcfg_by_hwaddr "${hwaddr}")

-         [ -f "${ifcfg_file}" ] && echo -n "${ifcfg_file}" && return

-     fi

+ 	hwaddr=$(get_hwaddr "${1}")

+ 	if [[ -n $hwaddr ]]; then

+ 		ifcfg_file=$(get_ifcfg_by_hwaddr "${hwaddr}")

+ 		[[ -f ${ifcfg_file} ]] && echo -n "${ifcfg_file}" && return

+ 	fi

  

-     ifcfg_file=$(get_ifcfg_by_device "${1}")

+ 	ifcfg_file=$(get_ifcfg_by_device "${1}")

  

-     echo -n "${ifcfg_file}"

+ 	echo -n "${ifcfg_file}"

  }

  

  # $1: netdev name

  # Return the ifcfg file whole name(including the path) of $1 if any.

- get_ifcfg_filename() {

-     local ifcfg_file

+ get_ifcfg_filename()

+ {

+ 	local ifcfg_file

  

-     ifcfg_file=$(get_ifcfg_nmcli "${1}")

-     if [ -z "${ifcfg_file}" ]; then

-         ifcfg_file=$(get_ifcfg_legacy "${1}")

-     fi

+ 	ifcfg_file=$(get_ifcfg_nmcli "${1}")

+ 	if [[ -z ${ifcfg_file} ]]; then

+ 		ifcfg_file=$(get_ifcfg_legacy "${1}")

+ 	fi

  

-     echo -n "${ifcfg_file}"

+ 	echo -n "${ifcfg_file}"

  }

  

  # returns 0 when omission of a module is desired in dracut_args

  # returns 1 otherwise

- is_dracut_mod_omitted() {

-     local dracut_args dracut_mod=$1

+ is_dracut_mod_omitted()

+ {

+ 	local dracut_args dracut_mod=$1

  

-     set -- $(kdump_get_conf_val dracut_args)

-     while [ $# -gt 0 ]; do

-         case $1 in

-             -o|--omit)

-                 [[ " ${2//[^[:alnum:]]/ } " ==  *" $dracut_mod "* ]] && return 0

-         esac

-         shift

-     done

+ 	set -- $(kdump_get_conf_val dracut_args)

+ 	while [ $# -gt 0 ]; do

+ 		case $1 in

+ 		-o | --omit)

+ 			[[ " ${2//[^[:alnum:]]/ } " == *" $dracut_mod "* ]] && return 0

+ 			;;

+ 		esac

+ 		shift

+ 	done

  

-     return 1

+ 	return 1

  }

  

- is_wdt_active() {

-     local active

+ is_wdt_active()

+ {

+ 	local active

  

-     [ -d /sys/class/watchdog ] || return 1

-     for dir in /sys/class/watchdog/*; do

-         [ -f "$dir/state" ] || continue

-         active=$(< "$dir/state")

-         [ "$active" =  "active" ] && return 0

-     done

-     return 1

+ 	[[ -d /sys/class/watchdog ]] || return 1

+ 	for dir in /sys/class/watchdog/*; do

+ 		[[ -f "$dir/state" ]] || continue

+ 		active=$(< "$dir/state")

+ 		[[ $active == "active" ]] && return 0

+ 	done

+ 	return 1

  }

  

  # If "dracut_args" contains "--mount" information, use it
@@ -446,45 +448,45 @@ 

  # its correctness).

  is_mount_in_dracut_args()

  {

-     [[ " $(kdump_get_conf_val dracut_args)" =~ .*[[:space:]]--mount[=[:space:]].* ]]

+ 	[[ " $(kdump_get_conf_val dracut_args)" =~ .*[[:space:]]--mount[=[:space:]].* ]]

  }

  

  check_crash_mem_reserved()

  {

-     local mem_reserved

+ 	local mem_reserved

  

-     mem_reserved=$(cat /sys/kernel/kexec_crash_size)

-     if [ $mem_reserved -eq 0 ]; then

-         derror "No memory reserved for crash kernel"

-         return 1

-     fi

+ 	mem_reserved=$(< /sys/kernel/kexec_crash_size)

+ 	if [[ $mem_reserved -eq 0 ]]; then

+ 		derror "No memory reserved for crash kernel"

+ 		return 1

+ 	fi

  

-     return 0

+ 	return 0

  }

  

  check_kdump_feasibility()

  {

-     if [ ! -e /sys/kernel/kexec_crash_loaded ]; then

-         derror "Kdump is not supported on this kernel"

-         return 1

-     fi

-     check_crash_mem_reserved

-     return $?

+ 	if [[ ! -e /sys/kernel/kexec_crash_loaded ]]; then

+ 		derror "Kdump is not supported on this kernel"

+ 		return 1

+ 	fi

+ 	check_crash_mem_reserved

+ 	return $?

  }

  

  check_current_kdump_status()

  {

-     if [ ! -f /sys/kernel/kexec_crash_loaded ];then

-         derror "Perhaps CONFIG_CRASH_DUMP is not enabled in kernel"

-         return 1

-     fi

+ 	if [[ ! -f /sys/kernel/kexec_crash_loaded ]]; then

+ 		derror "Perhaps CONFIG_CRASH_DUMP is not enabled in kernel"

+ 		return 1

+ 	fi

  

-     rc=`cat /sys/kernel/kexec_crash_loaded`

-     if [ $rc == 1 ]; then

-         return 0

-     else

-         return 1

-     fi

+ 	rc=$(< /sys/kernel/kexec_crash_loaded)

+ 	if [[ $rc == 1 ]]; then

+ 		return 0

+ 	else

+ 		return 1

+ 	fi

  }

  

  # remove_cmdline_param <kernel cmdline> <param1> [<param2>] ... [<paramN>]
@@ -492,17 +494,17 @@ 

  # For each "arg" in the removing params list, "arg" and "arg=xxx" will be removed if exists.

  remove_cmdline_param()

  {

-     local cmdline=$1

-     shift

+ 	local cmdline=$1

+ 	shift

  

-     for arg in $@; do

-         cmdline=`echo $cmdline | \

-                  sed -e "s/\b$arg=[^ ]*//g" \

-                  -e "s/^$arg\b//g" \

-                  -e "s/[[:space:]]$arg\b//g" \

-                  -e "s/\s\+/ /g"`

-     done

-     echo $cmdline

+ 	for arg in "$@"; do

+ 		cmdline=$(echo "$cmdline" |

+ 			sed -e "s/\b$arg=[^ ]*//g" \

+ 				-e "s/^$arg\b//g" \

+ 				-e "s/[[:space:]]$arg\b//g" \

+ 				-e "s/\s\+/ /g")

+ 	done

+ 	echo "$cmdline"

  }

  

  #
@@ -511,12 +513,12 @@ 

  #

  get_bootcpu_apicid()

  {

-     awk '                                                       \

+ 	awk '                                                       \

          BEGIN { CPU = "-1"; }                                   \

          $1=="processor" && $2==":"      { CPU = $NF; }          \

          CPU=="0" && /^apicid/           { print $NF; }          \

-         '                                                       \

-         /proc/cpuinfo

+         ' \

+ 		/proc/cpuinfo

  }

  

  #
@@ -525,23 +527,23 @@ 

  #

  append_cmdline()

  {

-     local cmdline=$1

-     local newstr=${cmdline/$2/""}

+ 	local cmdline=$1

+ 	local newstr=${cmdline/$2/""}

  

-     # unchanged str implies argument wasn't there

-     if [ "$cmdline" == "$newstr" ]; then

-         cmdline="${cmdline} ${2}=${3}"

-     fi

+ 	# unchanged str implies argument wasn't there

+ 	if [[ $cmdline == "$newstr" ]]; then

+ 		cmdline="${cmdline} ${2}=${3}"

+ 	fi

  

-     echo $cmdline

+ 	echo "$cmdline"

  }

  

  # This function check iomem and determines if we have more than

  # 4GB of ram available. Returns 1 if we do, 0 if we dont

  need_64bit_headers()

  {

-     return `tail -n 1 /proc/iomem | awk '{ split ($1, r, "-"); \

-     print (strtonum("0x" r[2]) > strtonum("0xffffffff")); }'`

+ 	return "$(tail -n 1 /proc/iomem | awk '{ split ($1, r, "-");

+         print (strtonum("0x" r[2]) > strtonum("0xffffffff")); }')"

  }

  

  # Check if secure boot is being enforced.
@@ -555,39 +557,39 @@ 

  # Assume efivars is mounted at /sys/firmware/efi/efivars.

  is_secure_boot_enforced()

  {

-     local secure_boot_file setup_mode_file

-     local secure_boot_byte setup_mode_byte

+ 	local secure_boot_file setup_mode_file

+ 	local secure_boot_byte setup_mode_byte

  

-     # On powerpc, secure boot is enforced if:

-     #   host secure boot: /ibm,secure-boot/os-secureboot-enforcing DT property exists

-     #   guest secure boot: /ibm,secure-boot >= 2

-     if [ -f /proc/device-tree/ibm,secureboot/os-secureboot-enforcing ]; then

+ 	# On powerpc, secure boot is enforced if:

+ 	#   host secure boot: /ibm,secure-boot/os-secureboot-enforcing DT property exists

+ 	#   guest secure boot: /ibm,secure-boot >= 2

+ 	if [[ -f /proc/device-tree/ibm,secureboot/os-secureboot-enforcing ]]; then

  		return 0

-     fi

-     if [ -f /proc/device-tree/ibm,secure-boot ] && \

-        [ $(lsprop /proc/device-tree/ibm,secure-boot | tail -1) -ge 2 ]; then

+ 	fi

+ 	if [[ -f /proc/device-tree/ibm,secure-boot ]] &&

+ 		[[ $(lsprop /proc/device-tree/ibm,secure-boot | tail -1) -ge 2 ]]; then

  		return 0

-     fi

+ 	fi

  

-     # Detect secure boot on x86 and arm64

-     secure_boot_file=$(find /sys/firmware/efi/efivars -name SecureBoot-* 2>/dev/null)

-     setup_mode_file=$(find /sys/firmware/efi/efivars -name SetupMode-* 2>/dev/null)

+ 	# Detect secure boot on x86 and arm64

+ 	secure_boot_file=$(find /sys/firmware/efi/efivars -name "SecureBoot-*" 2> /dev/null)

+ 	setup_mode_file=$(find /sys/firmware/efi/efivars -name "SetupMode-*" 2> /dev/null)

  

-     if [ -f "$secure_boot_file" ] && [ -f "$setup_mode_file" ]; then

-         secure_boot_byte=$(hexdump -v -e '/1 "%d\ "' $secure_boot_file|cut -d' ' -f 5)

-         setup_mode_byte=$(hexdump -v -e '/1 "%d\ "' $setup_mode_file|cut -d' ' -f 5)

+ 	if [[ -f $secure_boot_file ]] && [[ -f $setup_mode_file ]]; then

+ 		secure_boot_byte=$(hexdump -v -e '/1 "%d\ "' "$secure_boot_file" | cut -d' ' -f 5)

+ 		setup_mode_byte=$(hexdump -v -e '/1 "%d\ "' "$setup_mode_file" | cut -d' ' -f 5)

  

-         if [ "$secure_boot_byte" = "1" ] && [ "$setup_mode_byte" = "0" ]; then

-             return 0

-         fi

-     fi

+ 		if [[ $secure_boot_byte == "1" ]] && [[ $setup_mode_byte == "0" ]]; then

+ 			return 0

+ 		fi

+ 	fi

  

-     # Detect secure boot on s390x

-     if [[ -e "/sys/firmware/ipl/secure" && "$(cat /sys/firmware/ipl/secure)" == "1" ]]; then

-         return 0

-     fi

+ 	# Detect secure boot on s390x

+ 	if [[ -e "/sys/firmware/ipl/secure" && "$(< /sys/firmware/ipl/secure)" == "1" ]]; then

+ 		return 0

+ 	fi

  

-     return 1

+ 	return 1

  }

  

  #
@@ -596,31 +598,27 @@ 

  #

  prepare_kexec_args()

  {

-     local kexec_args=$1

-     local found_elf_args

- 

-     ARCH=`uname -m`

-     if [ "$ARCH" == "i686" -o "$ARCH" == "i386" ]

-     then

-         need_64bit_headers

-         if [ $? == 1 ]

-         then

-             found_elf_args=`echo $kexec_args | grep elf32-core-headers`

-             if [ -n "$found_elf_args" ]

-             then

-                 dwarn "Warning: elf32-core-headers overrides correct elf64 setting"

-             else

-                 kexec_args="$kexec_args --elf64-core-headers"

-             fi

-         else

-             found_elf_args=`echo $kexec_args | grep elf64-core-headers`

-             if [ -z "$found_elf_args" ]

-             then

-                 kexec_args="$kexec_args --elf32-core-headers"

-             fi

-         fi

-     fi

-     echo $kexec_args

+ 	local kexec_args=$1

+ 	local found_elf_args

+ 

+ 	ARCH=$(uname -m)

+ 	if [[ $ARCH == "i686" ]] || [[ $ARCH == "i386" ]]; then

+ 		need_64bit_headers

+ 		if [[ $? == 1 ]]; then

+ 			found_elf_args=$(echo "$kexec_args" | grep elf32-core-headers)

+ 			if [[ -n $found_elf_args ]]; then

+ 				dwarn "Warning: elf32-core-headers overrides correct elf64 setting"

+ 			else

+ 				kexec_args="$kexec_args --elf64-core-headers"

+ 			fi

+ 		else

+ 			found_elf_args=$(echo "$kexec_args" | grep elf64-core-headers)

+ 			if [[ -z $found_elf_args ]]; then

+ 				kexec_args="$kexec_args --elf32-core-headers"

+ 			fi

+ 		fi

+ 	fi

+ 	echo "$kexec_args"

  }

  

  #
@@ -632,88 +630,88 @@ 

  #

  prepare_kdump_bootinfo()

  {

-     local boot_imglist boot_dirlist boot_initrdlist curr_kver="$(uname -r)"

-     local machine_id

- 

-     if [ -z "$KDUMP_KERNELVER" ]; then

-         KDUMP_KERNELVER="$(uname -r)"

-     fi

- 

-     read machine_id < /etc/machine-id

-     boot_dirlist=${KDUMP_BOOTDIR:-"/boot /boot/efi /efi /"}

-     boot_imglist="$KDUMP_IMG-$KDUMP_KERNELVER$KDUMP_IMG_EXT $machine_id/$KDUMP_KERNELVER/$KDUMP_IMG"

- 

-     # Use BOOT_IMAGE as reference if possible, strip the GRUB root device prefix in (hd0,gpt1) format

-     local boot_img="$(cat /proc/cmdline | sed "s/^BOOT_IMAGE=\((\S*)\)\?\(\S*\) .*/\2/")"

-     if [ -n "$boot_img" ]; then

-         boot_imglist="$boot_img $boot_imglist"

-     fi

- 

-     for dir in $boot_dirlist; do

-         for img in $boot_imglist; do

-             if [ -f "$dir/$img" ]; then

-                 KDUMP_KERNEL=$(echo $dir/$img | tr -s '/')

-                 break 2

-             fi

-         done

-     done

- 

-     if ! [ -e "$KDUMP_KERNEL" ]; then

-         derror "Failed to detect kdump kernel location"

-         return 1

-     fi

- 

-     # Set KDUMP_BOOTDIR to where kernel image is stored

-     KDUMP_BOOTDIR=$(dirname $KDUMP_KERNEL)

- 

-     # Default initrd should just stay aside of kernel image, try to find it in KDUMP_BOOTDIR

-     boot_initrdlist="initramfs-$KDUMP_KERNELVER.img initrd"

-     for initrd in $boot_initrdlist; do

-         if [ -f "$KDUMP_BOOTDIR/$initrd" ]; then

-             defaut_initrd_base="$initrd"

-             DEFAULT_INITRD="$KDUMP_BOOTDIR/$defaut_initrd_base"

-             break

-         fi

-     done

- 

-     # Create kdump initrd basename from default initrd basename

-     # initramfs-5.7.9-200.fc32.x86_64.img => initramfs-5.7.9-200.fc32.x86_64kdump.img

-     # initrd => initrdkdump

-     if [[ -z "$defaut_initrd_base" ]]; then

-         kdump_initrd_base=initramfs-${KDUMP_KERNELVER}kdump.img

-     elif [[ $defaut_initrd_base == *.* ]]; then

-         kdump_initrd_base=${defaut_initrd_base%.*}kdump.${DEFAULT_INITRD##*.}

-     else

-         kdump_initrd_base=${defaut_initrd_base}kdump

-     fi

- 

-     # Place kdump initrd in `/var/lib/kdump` if `KDUMP_BOOTDIR` not writable

-     if [[ ! -w "$KDUMP_BOOTDIR" ]];then

-         var_target_initrd_dir="/var/lib/kdump"

-         mkdir -p "$var_target_initrd_dir"

-         KDUMP_INITRD="$var_target_initrd_dir/$kdump_initrd_base"

-     else

-         KDUMP_INITRD="$KDUMP_BOOTDIR/$kdump_initrd_base"

-     fi

+ 	local boot_img boot_imglist boot_dirlist boot_initrdlist

+ 	local machine_id

+ 

+ 	if [[ -z $KDUMP_KERNELVER ]]; then

+ 		KDUMP_KERNELVER="$(uname -r)"

+ 	fi

+ 

+ 	read -r machine_id < /etc/machine-id

+ 	boot_dirlist=${KDUMP_BOOTDIR:-"/boot /boot/efi /efi /"}

+ 	boot_imglist="$KDUMP_IMG-$KDUMP_KERNELVER$KDUMP_IMG_EXT $machine_id/$KDUMP_KERNELVER/$KDUMP_IMG"

+ 

+ 	# Use BOOT_IMAGE as reference if possible, strip the GRUB root device prefix in (hd0,gpt1) format

+ 	boot_img="$(sed "s/^BOOT_IMAGE=\((\S*)\)\?\(\S*\) .*/\2/" /proc/cmdline)"

+ 	if [[ -n $boot_img ]]; then

+ 		boot_imglist="$boot_img $boot_imglist"

+ 	fi

+ 

+ 	for dir in $boot_dirlist; do

+ 		for img in $boot_imglist; do

+ 			if [[ -f "$dir/$img" ]]; then

+ 				KDUMP_KERNEL=$(echo "$dir/$img" | tr -s '/')

+ 				break 2

+ 			fi

+ 		done

+ 	done

+ 

+ 	if ! [[ -e $KDUMP_KERNEL ]]; then

+ 		derror "Failed to detect kdump kernel location"

+ 		return 1

+ 	fi

+ 

+ 	# Set KDUMP_BOOTDIR to where kernel image is stored

+ 	KDUMP_BOOTDIR=$(dirname "$KDUMP_KERNEL")

+ 

+ 	# Default initrd should just stay aside of kernel image, try to find it in KDUMP_BOOTDIR

+ 	boot_initrdlist="initramfs-$KDUMP_KERNELVER.img initrd"

+ 	for initrd in $boot_initrdlist; do

+ 		if [[ -f "$KDUMP_BOOTDIR/$initrd" ]]; then

+ 			defaut_initrd_base="$initrd"

+ 			DEFAULT_INITRD="$KDUMP_BOOTDIR/$defaut_initrd_base"

+ 			break

+ 		fi

+ 	done

+ 

+ 	# Create kdump initrd basename from default initrd basename

+ 	# initramfs-5.7.9-200.fc32.x86_64.img => initramfs-5.7.9-200.fc32.x86_64kdump.img

+ 	# initrd => initrdkdump

+ 	if [[ -z $defaut_initrd_base ]]; then

+ 		kdump_initrd_base=initramfs-${KDUMP_KERNELVER}kdump.img

+ 	elif [[ $defaut_initrd_base == *.* ]]; then

+ 		kdump_initrd_base=${defaut_initrd_base%.*}kdump.${DEFAULT_INITRD##*.}

+ 	else

+ 		kdump_initrd_base=${defaut_initrd_base}kdump

+ 	fi

+ 

+ 	# Place kdump initrd in $(/var/lib/kdump) if $(KDUMP_BOOTDIR) not writable

+ 	if [[ ! -w $KDUMP_BOOTDIR ]]; then

+ 		var_target_initrd_dir="/var/lib/kdump"

+ 		mkdir -p "$var_target_initrd_dir"

+ 		KDUMP_INITRD="$var_target_initrd_dir/$kdump_initrd_base"

+ 	else

+ 		KDUMP_INITRD="$KDUMP_BOOTDIR/$kdump_initrd_base"

+ 	fi

  }

  

  get_watchdog_drvs()

  {

-     local _wdtdrvs _drv _dir

+ 	local _wdtdrvs _drv _dir

  

-     for _dir in /sys/class/watchdog/*; do

-         # device/modalias will return driver of this device

-         [[ -f "$_dir/device/modalias" ]] || continue

-         _drv=$(< "$_dir/device/modalias")

-         _drv=$(modprobe --set-version "$KDUMP_KERNELVER" -R $_drv 2>/dev/null)

-         for i in $_drv; do

-             if ! [[ " $_wdtdrvs " == *" $i "* ]]; then

-                 _wdtdrvs="$_wdtdrvs $i"

-             fi

-         done

-     done

+ 	for _dir in /sys/class/watchdog/*; do

+ 		# device/modalias will return driver of this device

+ 		[[ -f "$_dir/device/modalias" ]] || continue

+ 		_drv=$(< "$_dir/device/modalias")

+ 		_drv=$(modprobe --set-version "$KDUMP_KERNELVER" -R "$_drv" 2> /dev/null)

+ 		for i in $_drv; do

+ 			if ! [[ " $_wdtdrvs " == *" $i "* ]]; then

+ 				_wdtdrvs="$_wdtdrvs $i"

+ 			fi

+ 		done

+ 	done

  

-     echo $_wdtdrvs

+ 	echo "$_wdtdrvs"

  }

  

  #
@@ -722,144 +720,143 @@ 

  # Store the final result in global $KDUMP_COMMANDLINE.

  prepare_cmdline()

  {

-     local cmdline id

- 

-     if [ -z "$1" ]; then

-         cmdline=$(cat /proc/cmdline)

-     else

-         cmdline="$1"

-     fi

- 

-     # These params should always be removed

-     cmdline=$(remove_cmdline_param "$cmdline" crashkernel panic_on_warn)

-     # These params can be removed configurably

-     cmdline=$(remove_cmdline_param "$cmdline" "$2")

- 

-     # Always remove "root=X", as we now explicitly generate all kinds

-     # of dump target mount information including root fs.

-     #

-     # We do this before KDUMP_COMMANDLINE_APPEND, if one really cares

-     # about it(e.g. for debug purpose), then can pass "root=X" using

-     # KDUMP_COMMANDLINE_APPEND.

-     cmdline=$(remove_cmdline_param "$cmdline" root)

- 

-     # With the help of "--hostonly-cmdline", we can avoid some interitage.

-     cmdline=$(remove_cmdline_param "$cmdline" rd.lvm.lv rd.luks.uuid rd.dm.uuid rd.md.uuid fcoe)

- 

-     # Remove netroot, rd.iscsi.initiator and iscsi_initiator since

-     # we get duplicate entries for the same in case iscsi code adds

-     # it as well.

-     cmdline=$(remove_cmdline_param "$cmdline" netroot rd.iscsi.initiator iscsi_initiator)

- 

-     cmdline="${cmdline} $3"

- 

-     id=$(get_bootcpu_apicid)

-     if [ ! -z ${id} ] ; then

-         cmdline=$(append_cmdline "${cmdline}" disable_cpu_apicid ${id})

-     fi

- 

-     # If any watchdog is used, set it's pretimeout to 0. pretimeout let

-     # watchdog panic the kernel first, and reset the system after the

-     # panic. If the system is already in kdump, panic is not helpful

-     # and only increase the chance of watchdog failure.

-     for i in $(get_watchdog_drvs); do

-         cmdline+=" $i.pretimeout=0"

- 

-         if [[ $i == hpwdt ]]; then

-             # hpwdt have a special parameter kdumptimeout, is's only suppose

-             # to be set to non-zero in first kernel. In kdump, non-zero

-             # value could prevent the watchdog from resetting the system.

-             cmdline+=" $i.kdumptimeout=0"

-         fi

-     done

- 

-     # Remove trace_buf_size, trace_event

-     cmdline=$(remove_cmdline_param "$cmdline" trace_buf_size trace_event)

-     cmdline="${cmdline} trace_buf_size=1"

- 

-     echo ${cmdline}

+ 	local cmdline id arg

+ 

+ 	if [[ -z $1 ]]; then

+ 		cmdline=$(< /proc/cmdline)

+ 	else

+ 		cmdline="$1"

+ 	fi

+ 

+ 	# These params should always be removed

+ 	cmdline=$(remove_cmdline_param "$cmdline" crashkernel panic_on_warn)

+ 	# These params can be removed configurably

+ 	while read -r arg; do

+ 		cmdline=$(remove_cmdline_param "$cmdline" "$arg")

+ 	done <<< "$(echo "$2" | xargs -n 1 echo)"

+ 

+ 	# Always remove "root=X", as we now explicitly generate all kinds

+ 	# of dump target mount information including root fs.

+ 	#

+ 	# We do this before KDUMP_COMMANDLINE_APPEND, if one really cares

+ 	# about it(e.g. for debug purpose), then can pass "root=X" using

+ 	# KDUMP_COMMANDLINE_APPEND.

+ 	cmdline=$(remove_cmdline_param "$cmdline" root)

+ 

+ 	# With the help of "--hostonly-cmdline", we can avoid some interitage.

+ 	cmdline=$(remove_cmdline_param "$cmdline" rd.lvm.lv rd.luks.uuid rd.dm.uuid rd.md.uuid fcoe)

+ 

+ 	# Remove netroot, rd.iscsi.initiator and iscsi_initiator since

+ 	# we get duplicate entries for the same in case iscsi code adds

+ 	# it as well.

+ 	cmdline=$(remove_cmdline_param "$cmdline" netroot rd.iscsi.initiator iscsi_initiator)

+ 

+ 	cmdline="${cmdline} $3"

+ 

+ 	id=$(get_bootcpu_apicid)

+ 	if [[ -n ${id} ]]; then

+ 		cmdline=$(append_cmdline "$cmdline" disable_cpu_apicid "$id")

+ 	fi

+ 

+ 	# If any watchdog is used, set it's pretimeout to 0. pretimeout let

+ 	# watchdog panic the kernel first, and reset the system after the

+ 	# panic. If the system is already in kdump, panic is not helpful

+ 	# and only increase the chance of watchdog failure.

+ 	for i in $(get_watchdog_drvs); do

+ 		cmdline+=" $i.pretimeout=0"

+ 

+ 		if [[ $i == hpwdt ]]; then

+ 			# hpwdt have a special parameter kdumptimeout, is's only suppose

+ 			# to be set to non-zero in first kernel. In kdump, non-zero

+ 			# value could prevent the watchdog from resetting the system.

+ 			cmdline+=" $i.kdumptimeout=0"

+ 		fi

+ 	done

+ 

+ 	# Remove trace_buf_size, trace_event

+ 	cmdline=$(remove_cmdline_param "$cmdline" trace_buf_size trace_event)

+ 	cmdline="${cmdline} trace_buf_size=1"

+ 

+ 	echo "$cmdline"

  }

  

  #get system memory size in the unit of GB

  get_system_size()

  {

-     result=$(cat /proc/iomem  | grep "System RAM" | awk -F ":" '{ print $1 }' | tr [:lower:] [:upper:] | paste -sd+)

-     result="+$result"

-     # replace '-' with '+0x' and '+' with '-0x'

-     sum=$( echo $result | sed -e 's/-/K0x/g' | sed -e 's/+/-0x/g' | sed -e 's/K/+/g' )

-     size=$(printf "%d\n" $(($sum)))

-     let size=$size/1024/1024/1024

+ 	result=$(grep "System RAM" /proc/iomem | awk -F ":" '{ print $1 }' | tr "[:lower:]" "[:upper:]" | paste -sd+)

+ 	result="+$result"

+ 	# replace '-' with '+0x' and '+' with '-0x'

+ 	sum=$(echo "$result" | sed -e 's/-/K0x/g' -e 's/+/-0x/g' -e 's/K/+/g')

+ 	size=$(printf "%d\n" $((sum)))

+ 	size=$((size / 1024 / 1024 / 1024))

  

-     echo $size

+ 	echo "$size"

  }

  

  get_recommend_size()

  {

-     local mem_size=$1

-     local _ck_cmdline=$2

-     local OLDIFS="$IFS"

- 

-     last_sz=""

-     last_unit=""

- 

-     start=${_ck_cmdline: :1}

-     if [ $mem_size -lt $start ]; then

-         echo "0M"

-         return

-     fi

-     IFS=','

-     for i in $_ck_cmdline; do

-         end=$(echo $i | awk -F "-" '{ print $2 }' | awk -F ":" '{ print $1 }')

-         recommend=$(echo $i | awk -F "-" '{ print $2 }' | awk -F ":" '{ print $2 }')

-         size=${end: : -1}

-         unit=${end: -1}

-         if [ $unit == 'T' ]; then

-             let size=$size*1024

-         fi

-         if [ $mem_size -lt $size ]; then

-             echo $recommend

-             IFS="$OLDIFS"

-             return

-         fi

-     done

-     IFS="$OLDIFS"

+ 	local mem_size=$1

+ 	local _ck_cmdline=$2

+ 	local OLDIFS="$IFS"

+ 

+ 	start=${_ck_cmdline::1}

+ 	if [[ $mem_size -lt $start ]]; then

+ 		echo "0M"

+ 		return

+ 	fi

+ 	IFS=','

+ 	for i in $_ck_cmdline; do

+ 		end=$(echo "$i" | awk -F "-" '{ print $2 }' | awk -F ":" '{ print $1 }')

+ 		recommend=$(echo "$i" | awk -F "-" '{ print $2 }' | awk -F ":" '{ print $2 }')

+ 		size=${end::-1}

+ 		unit=${end: -1}

+ 		if [[ $unit == 'T' ]]; then

+ 			size=$((size * 1024))

+ 		fi

+ 		if [[ $mem_size -lt $size ]]; then

+ 			echo "$recommend"

+ 			IFS="$OLDIFS"

+ 			return

+ 		fi

+ 	done

+ 	IFS="$OLDIFS"

  }

  

  # return recommended size based on current system RAM size

- # $1: kernel version, if not set, will defaults to `uname -r`

+ # $1: kernel version, if not set, will defaults to $(uname -r)

  kdump_get_arch_recommend_size()

  {

-     local kernel=$1 arch

+ 	local kernel=$1 arch

  

-     if ! [ -r "/proc/iomem" ] ; then

-         echo "Error, can not access /proc/iomem."

-         return 1

-     fi

+ 	if ! [[ -r "/proc/iomem" ]]; then

+ 		echo "Error, can not access /proc/iomem."

+ 		return 1

+ 	fi