File zfcp_host_configure of Package s390-tools.10760

#!/bin/sh
#
# zfcp_host_configure
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# Configures a zfcp host adapter by calling the IBM-provided chzdev command.
# Whereas this script used to validate the parameters provided to it,
# we now rely on chzdev to do that instead. The script is intended only
# as a "translation layer" to provide backward compatability for older
# scripts and tools that invoke it.
#
#
# Usage:
#   zfcp_host_configure <ccwid> <online>
#
#	ccwid = x.y.ssss where
#		x is always 0 until IBM creates something that uses that number
#		y is the logical channel subsystem (lcss) number. Most often
#                 this is 0, but it could be non-zero
#		ssss is the four digit subchannel address of the device, in
#                    hexidecimal, with leading zeros.
#	online = 0 to take the device offline
#		 1 to bring the device online
#
# Return codes
#   Return codes are determined by the chzdev command.
#

mesg () {
    echo "$@"
}

debug_mesg () {
    case "${DEBUG}" in
	yes) mesg "$@" ;;
	*) ;;
    esac
}

add_cio_channel() {
	echo "$* # ${DATE}" >> /boot/zipl/active_devices.txt
}

remove_cio_channel() {
	[ -w /boot/zipl/active_devices.txt ] && sed -i -e "/^${1}/d" /boot/zipl/active_devices.txt
}

usage(){
  echo "Usage: ${0}  <ccwid> <online>"
  echo "	ccwid = x.y.ssss where"
  echo "		x is always 0 until IBM creates something that uses that number"
  echo "		y is the logical channel subsystem (lcss) number. Most often"
  echo "                  this is 0, but it could be non-zero"
  echo "		ssss is the four digit subchannel address of the device, in"
  echo "                     hexidecimal, with leading zeros."
  echo "	online = 0 to take the device offline"
  echo "		 1 to bring the device online"
}

if [ "${DEBUG}" != "yes" ]; then
  DEBUG="no"
fi

DATE=$(date)

CCW_CHAN_ID=${1}
ON_OFF=${2}

if [ -z "${CCW_CHAN_ID}" ] || [ -z "${ON_OFF}" ]; then
  mesg "You didn't specify all the needed parameters."
  usage
  exit 1
fi

if [ "${ON_OFF}" == 0 ]; then
  debug_mesg "chzdev -d zfcp-host --no-root-update ${CCW_CHAN_ID}"
  chzdev -d zfcp-host --no-root-update ${CCW_CHAN_ID}
elif [ "${ON_OFF}" == 1 ]; then
  debug_mesg "chzdev -e zfcp-host --no-root-update ${CCW_CHAN_ID}"
  chzdev -e zfcp-host --no-root-update ${CCW_CHAN_ID}
else mesg "You must specify a 0 or a 1 for the online/offline attribute."
     usage
     exit 1
fi

RC=${?}
if [ ${RC} -ne 0 ]; then
  exit ${RC}
fi

if [ ${ON_OFF} == 1 ]; then
  add_cio_channel "${CCW_CHAN_ID}"
else remove_cio_channel "${CCW_CHAN_ID}"
fi