aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/open-iscsi/APKBUILD15
-rw-r--r--main/open-iscsi/iscsid.initd148
2 files changed, 71 insertions, 92 deletions
diff --git a/main/open-iscsi/APKBUILD b/main/open-iscsi/APKBUILD
index e405cbb945..d78fdf66dc 100644
--- a/main/open-iscsi/APKBUILD
+++ b/main/open-iscsi/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Leonardo Arena <rnalrd@alpinelinux.org>
pkgname=open-iscsi
pkgver=2.1.0
-pkgrel=0
+pkgrel=1
pkgdesc="High performance, transport independent, multi-platform iSCSI initiator"
url="https://www.open-iscsi.com"
arch="all"
@@ -25,7 +25,6 @@ builddir="$srcdir"/$pkgname-$pkgver
build() {
make prefix=/usr \
exec_prefix=/usr \
- sbindir=/usr/bin \
localstatedir=/var \
sysconfdir=/etc \
mandir=/usr/share/man \
@@ -33,18 +32,14 @@ build() {
}
package() {
- make prefix=/usr sbindir=/usr/bin DESTDIR="$pkgdir" install
- install -Dm755 "$pkgdir"/usr/bin/iscsid "$pkgdir"/usr/sbin/iscsid
+ make prefix=/usr DESTDIR="$pkgdir" install
install -Dm755 "$srcdir"/iscsid.initd "$pkgdir"/etc/init.d/iscsid
- local file
- for file in initd confd conf; do
- install -Dm644 "$srcdir"/iscsid.$file "$pkgdir"/etc/conf.d/iscsid
- install -Dm644 "$srcdir"/iscsid.$file "$pkgdir"/etc/iscsi/iscsid.$file
- done
+ install -Dm644 "$srcdir"/iscsid.confd "$pkgdir"/etc/conf.d/iscsid
+ install -Dm644 "$srcdir"/iscsid.conf "$pkgdir"/etc/iscsi/iscsid.conf
}
sha512sums="bb1a4ff2bab0562bfd4281d757dd888e8f5d2d1ae16561cabf5598073c343e8c2dc9b35992c2bc51398faffceb9b70ea2eae214ab205a586bcb971d741d5f59d open-iscsi-2.1.0.tar.gz
-49ac7e1c9cd6aa444edcfc4d5dea1330a93cee286d69d82521cc1afecc66296027c359f2314e418671813f049c9ff18ba4bdd0f90922423fac94b6529c887cf5 iscsid.initd
+a5544e35da3433dfde96984d2e5783991d961554b8843f4f96d4317a38d7534864882342633ed0dc15c2f9e49a419e51958593b0de1ce84644938dafabe392fc iscsid.initd
075bb9cb783be7ccbc799947e0e042b85310d40b3045141dc1be40ca84ed1cc0e1e54559df501c512c179e28375314b27a03c15d9a6d4b1cabd428b2279985d3 iscsid.confd
3686d31c5642e611c0c0c61f0f42a33030a74b518a2a108f004b9bd34b2b98d8e29ee2416a5b9cc447ab0449bdc94158b2323d977e7b7d2930dd4dcf0866da68 iscsid.conf
1b89ffd6de0dc7bb63fc2702a97e49df4369158c66ee609acfc041b1677c07fbd964b7a709f1f324fa51a9842d4d3e11611d9783e18d526372d468163c0ac8db musl-fixes.patch
diff --git a/main/open-iscsi/iscsid.initd b/main/open-iscsi/iscsid.initd
index 2affb80840..617af9ac10 100644
--- a/main/open-iscsi/iscsid.initd
+++ b/main/open-iscsi/iscsid.initd
@@ -1,9 +1,19 @@
#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
-extra_started_commands="starttargets stoptargets restarttargets"
+command="/usr/sbin/iscsid"
+command_args="${OPTS}"
+start_stop_daemon_args="-w 100" # iscsid might fail e.g. when the iSCSI kernel modules aren't available
+pidfile=${PIDFILE:-/var/run/${SVCNAME}.pid}
+
+extra_started_commands="starttargets stoptargets"
+extra_commands="restarttargets"
+
+ISCSIADM=/usr/sbin/iscsiadm
depend() {
- after modules
+ after modules multipath
use net
}
@@ -16,101 +26,44 @@ checkconfig() {
eerror "Config file ${CONFIG_FILE} does not exist!"
return 1
fi
- if [ ! -e ${INITIATORNAME_FILE} ] || [ ! "$(grep "^InitiatorName=iqn\." ${INITIATORNAME_FILE})" ]; then
+
+ if [ -e ${INITIATORNAME_FILE} ]; then
+ . ${INITIATORNAME_FILE}
+ fi
+ if [ ! -e ${INITIATORNAME_FILE} -o -z "${InitiatorName}" ]; then
ewarn "${INITIATORNAME_FILE} should contain a string with your initiatior name."
- IQN=iqn.$(date +%Y-%m).$(hostname -f | awk 'BEGIN { FS=".";}{x=NF; while (x>0) {printf $x ;x--; if (x>0) printf ".";} print ""}'):openiscsi
- IQN=${IQN}-$(echo ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM} | md5sum | sed -e "s/\(.*\) -/\1/g" -e 's/ //g')
+ local IQN=$(/usr/sbin/iscsi-iname)
ebegin "Creating InitiatorName ${IQN} in ${INITIATORNAME_FILE}"
echo "InitiatorName=${IQN}" >> "${INITIATORNAME_FILE}"
eend $?
fi
}
-do_modules() {
- msg="$1"
- shift
- modules="${1}"
- shift
- modopts="$@"
- for m in ${modules}
- do
- ebegin "${msg} ${m}"
- modprobe ${modopts} ${m}
- ret=$?
- eend ${ret}
- if [ ${ret} -ne 0 ]; then
- return ${ret}
- fi
- done
- return 0
+starttargets() {
+ ebegin "Setting up iSCSI targets"
+ $ISCSIADM -m node --loginall=automatic
+ local ret=$?
+ eend $ret
+ return $ret
}
-start() {
- ebegin "Checking open-iSCSI configuration"
- checkconfig
- ret=$?
- if [ $ret -ne 0 ]; then
- eend 1
- return 1
- fi
- ebegin "Loading iSCSI modules"
- do_modules 'Loading' 'libiscsi scsi_transport_iscsi iscsi_tcp'
- ret=$?
- if [ $ret -ne 0 ]; then
- eend 1
- return 1
- fi
+stoptargets() {
+ ebegin "Disconnecting iSCSI targets"
+ sync
+ $ISCSIADM -m node --logoutall=all
+ local ret=$?
- ebegin "Starting ${SVCNAME}"
- start-stop-daemon --start --quiet --exec /usr/sbin/iscsid -- ${OPTS}
- ret=$?
- if [ $ret -ne 0 ]; then
- eend $?
- return $?
+ if [ $ret -eq 21 ]; then
+ # See man iscsiadm(8)
+ einfo "No active sessions to disconnect"
+ eend 0
+ return 0
fi
- # Start automatic targets when iscsid is started
- if [ "${AUTOSTARTTARGETS}" = "yes" ]; then
- starttargets
- return $?
- fi
- return 0
-}
-
-stop() {
- local ret=
- stoptargets
- ebegin "Stopping ${SVCNAME}"
- start-stop-daemon --signal HUP --stop --quiet --exec /usr/sbin/iscsid #--pidfile $PID_FILE
- ret=$?
eend $ret
-
- # ugly, but pid file is not removed by iscsid
- rm -f $PID_FILE
return $ret
}
-starttargets() {
- ebegin "Setting up iSCSI targets"
- /usr/bin/iscsiadm -m node --loginall=automatic
- ret=$?
- #Don't report error when no targets are configured
- if [ "$ret" -eq "21" ]; then
- ret="0"
- fi
- eend $ret
- return $ret
-}
-
-stoptargets() {
- ebegin "Disconnecting iSCSI targets"
- sync
- /usr/bin/iscsiadm -m node --logoutall=all
- ret=$?
- eend $ret
- return $ret
-}
-
restarttargets() {
stoptargets
starttargets
@@ -118,5 +71,36 @@ restarttargets() {
status() {
ebegin "Showing current active iSCSI sessions"
- /usr/bin/iscsiadm -m session
+ $ISCSIADM -m session
+}
+
+
+start_pre() {
+ local ret=1
+
+ ebegin "Checking Open-iSCSI configuration"
+ checkconfig
+ ret=$?
+ if [ $ret -ne 0 ]; then
+ eend 1
+ return 1
+ fi
+ eend 0
+}
+
+start_post() {
+ # Start automatic targets when iscsid is started
+ if [ "${AUTOSTARTTARGETS}" = "yes" ]; then
+ starttargets
+ local ret=$?
+ if [ "${AUTOSTART}" = "strict" -a $ret -ne 0 ]; then
+ stop
+ return $ret
+ fi
+ fi
+ return 0
+}
+
+stop_pre() {
+ stoptargets
}