From 0c0a734968e8c9b166e0d16af75c5ea92412a5e0 Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Thu, 25 Feb 2010 14:14:23 +0000 Subject: [PATCH] A set of startup scripts for Gentoo customized by Scott R. Bowe git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1521 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- iscsi-scst/etc/initd/initd.gentoo | 7 +- scstadmin/init.d/qla2x00t.gentoo | 104 ++++++++++++++++++ scstadmin/init.d/scst.gentoo | 172 ++++++++++++++++++++++++++++++ 3 files changed, 282 insertions(+), 1 deletion(-) create mode 100755 scstadmin/init.d/qla2x00t.gentoo create mode 100755 scstadmin/init.d/scst.gentoo diff --git a/iscsi-scst/etc/initd/initd.gentoo b/iscsi-scst/etc/initd/initd.gentoo index 65053db34..6f6fddbe7 100644 --- a/iscsi-scst/etc/initd/initd.gentoo +++ b/iscsi-scst/etc/initd/initd.gentoo @@ -1,7 +1,11 @@ #!/sbin/runscript # -# Start the iSCSI-SCST Target. +# System startup script for the SCST iSCSI functionality. # +# Customized for gentoo linux by Scott Bowe. +# +# Note: on most Linux distributions /bin/sh is a soft link to /bin/bash, while +# on a default Ubuntu setup /bin/sh is a soft link to /bin/dash ! PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin MEM_SIZE=1048576 @@ -9,6 +13,7 @@ MEM_SIZE=1048576 depend() { use net + need scst } configure_memsize() diff --git a/scstadmin/init.d/qla2x00t.gentoo b/scstadmin/init.d/qla2x00t.gentoo new file mode 100755 index 000000000..bbf36fcdc --- /dev/null +++ b/scstadmin/init.d/qla2x00t.gentoo @@ -0,0 +1,104 @@ +#!/sbin/runscript +# +# Copyright (C) 2008 Mark Buechler +# Copyright (C) 2009 Bart Van Assche +# Copyright (C) 2010 Scott Bowe +# This software is made available under the GPLv2 license. +# +# System startup script for the QLogic 22xx/23xx card target driver. +# +# Customized for Gentoo Linux by Scott Bowe +# +# Note: on most Linux distributions /bin/sh is a soft link to /bin/bash, while +# on a default Ubuntu setup /bin/sh is a soft link to /bin/dash ! +# + +opts="${opts} try-restart " +depend() { + use logger localmount + before scst +} +PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin + +# Modules to load/unload. +KERNEL_MODULES="qla2x00tgt" +MODPROBE="/sbin/modprobe" +RMMOD="/sbin/rmmod" + +# Return values according to LSB for all commands but status: +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess argument(s) +# 3 - unimplemented feature (e.g. "reload") +# 4 - insufficient privilege +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# +start(){ + ## Start the service. + ebegin "Loading and configuring the QLogic target driver" + eindent + ret=0 + for module in ${KERNEL_MODULES}; do + einfo "Loading ${module}" + if ! modprobe "${module}"; then + ret=5 + eend $ret "Failed to load target driver" + return $ret + fi + done + einfo "Qlogic target driver loaded!!!" + eend $? + return $? +} + +stop() { + ## Stop the service. + ebegin "Stopping the QLogic target driver" + eindent + reverse_list="" + for module in ${KERNEL_MODULES}; do + reverse_list="${module} ${reverse_list}" + done + for module in ${reverse_list}; do + einfo "Unloading module" + if [ -e "/sys/module/${module}" ] && ! rmmod "${module}"; then + $eend $? "Failed to unload the target driver" + return $? + fi + done + einfo "Qlogic target driver unloaded!!!" + eend $? + return $? +} + +restart() { + ## Stop and restart the service if the service is already running, + ## otherwise start the service. + stop + start +} + +try-restart() { + ## Restart the service if the service is already running. + status >/dev/null 2>&1 && restart +} + +status() { + einfo "Qlogic target status: " + eindent + + for module in ${SCST_MODULES}; do + if [ ! -e "/sys/module/${module}" ]; then + einfo "${module} not loaded" + ret=3 + eend $ret + return $ret + fi + done + ret=0 + ebegin "Qlogic target loaded OK" + eend $ret + return $ret +} diff --git a/scstadmin/init.d/scst.gentoo b/scstadmin/init.d/scst.gentoo new file mode 100755 index 000000000..3efaa135a --- /dev/null +++ b/scstadmin/init.d/scst.gentoo @@ -0,0 +1,172 @@ +#!/sbin/runscript +# +# Copyright (C) 2008 Mark Buechler +# Copyright (C) 2009 Bart Van Assche +# Copyright (C) 2010 Scott Bowe +# This software is made available under the GPLv2 license. +# +# System startup script for the SCST core functionality. +# +# Customized for gentoo linux by Scott Bowe. +# +# Note: on most Linux distributions /bin/sh is a soft link to /bin/bash, while +# on a default Ubuntu setup /bin/sh is a soft link to /bin/dash ! + +opts="${opts} try-restart reload force-reload" +depend() { + use logger +} + +PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin + +DEFAULTFILE="/etc/conf.d/scst" +SCST_CFG=/etc/scst.conf +MODPROBE="/sbin/modprobe" +RMMOD="/sbin/rmmod" + +if [ -f $DEFAULTFILE ]; then + . $DEFAULTFILE +fi + +# Modules to load/unload. +# +# !!! DON'T ADD HERE TARGET DRIVERS, WHICH IMMEDIATELLY START ACCEPTING +# !!! NEW CONNECTIONS, BECAUSE AT THIS POINT ACCESS CONTROL HASN'T CONFIGURED +# !!! YET! +# +SCST_MODULES="scst scst_disk scst_vdisk" + +# Return values according to LSB for all commands but status: +# 0 - success +# 1 - generic or unspecified error +# 2 - invalid or excess argument(s) +# 3 - unimplemented feature (e.g. "reload") +# 4 - insufficient privilege +# 5 - program is not installed +# 6 - program is not configured +# 7 - program is not running +# + +checkconfig() { + if [ ! -f $SCST_CFG ] ; then + eerror "Please create $SCST_CFG" + eerror "Do touch $SCST_CFG, and run scstadmin" + return 1 + fi + return 0 +} + +checkinstall() { + if [ ! -x `which scstadmin` ] ; then + eerror "scstadmin is not intalled" + return 1 + fi + return 0 +} + +start() { + ebegin "Loading and configuring the mid-level SCSI target SCST" + eindent + checkconfig || return $? + checkinstall || return $? + ret=0 + for module in ${SCST_MODULES}; do + einfo "Loading SCST module ${module}..." + if ! modprobe "${module}"; then + eerror "${module} failed to load" + eend $? "Failed to load SCST" + return $? + fi + done + einfo "Configuring SCST..." + eindent + if scstadmin -config $SCST_CFG >/dev/null 2>&1; then + einfo "SCST config was loaded" + else + eend $? "SCST config could not be loaded" + return $? + fi + eoutdent + eoutdent + einfo "SCST loaded!!!" + eend $? +} + +stop() { + ## Stop the service. + ebegin "Stopping the mid-level SCSI target SCST" + eindent + reverse_list="" + for module in ${SCST_MODULES}; do + reverse_list="${module} ${reverse_list}" + done + for module in ${reverse_list}; do + einfo "Unloading ${module}" + if [ -e "/sys/module/${module}" ] && ! rmmod "${module}"; then + eindent + eend $? "Failed to unload ${module}" + return $? + fi + done + eoutdent + einfo "SCST unloaded!!!" + eend $? +} + +restart() { + ## Stop and restart the service if the service is already running, + ## otherwise start the service. + stop + sleep 3 + start +} + +try-restart() { + ## Restart the service if the service is already running. + status >/dev/null 2>&1 && restart +} + +reload() { + ## Cause the configuration of the service to be reloaded without + ## actually stopping and restarting the service. + einfo "Reloading SCST configuration" + eindent + if scstadmin -config $SCST_CFG >/dev/null 2>&1; then + ret=0 + ebegin "SCST config reloaded" + else + eend $? "SCST config could not be releaded" + exit 1 + fi +} + +force-reload() { + ## Cause the configuration to be reloaded if the service supports this, + ## otherwise restart the service if it is running. + einfo "Reloading SCST configuration" + eindent + if scstadmin -config $SCST_CFG >/dev/null 2>&1; then + ret=0 + ebegin "SCST config reloaded" + else + restart + fi +} + +status() { + ## Print the current status of the service. + einfo "SCST status: " + eindent + + for module in ${SCST_MODULES}; do + if [ ! -e "/sys/module/${module}" ]; then + einfo "${module} not loaded" + ret=3 + eend $ret + return $ret + fi + done + ret=0 + ebegin "SCST modules loaded OK" + eend $ret +}