Module Name: src
Committed By: mlelstv
Date: Fri Feb 3 13:53:40 UTC 2023
Modified Files:
src/distrib/sets/lists/etc: mi
src/etc/defaults: rc.conf
src/etc/rc.d: Makefile
Added Files:
src/etc/rc.d: iscsid_volumes
Log Message:
Add start script to attach iscsi volumes at boot.
The default is to execute the script (iscsid_volumes=YES), so if you have
any volumes defined, you should also start iscsid (iscsid=YES) to avoid
error messages.
To generate a diff of this commit:
cvs rdiff -u -r1.270 -r1.271 src/distrib/sets/lists/etc/mi
cvs rdiff -u -r1.162 -r1.163 src/etc/defaults/rc.conf
cvs rdiff -u -r1.116 -r1.117 src/etc/rc.d/Makefile
cvs rdiff -u -r0 -r1.1 src/etc/rc.d/iscsid_volumes
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/etc/mi
diff -u src/distrib/sets/lists/etc/mi:1.270 src/distrib/sets/lists/etc/mi:1.271
--- src/distrib/sets/lists/etc/mi:1.270 Mon Jun 6 10:56:27 2022
+++ src/distrib/sets/lists/etc/mi Fri Feb 3 13:53:40 2023
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.270 2022/06/06 10:56:27 nia Exp $
+# $NetBSD: mi,v 1.271 2023/02/03 13:53:40 mlelstv Exp $
#
# Note: end-user configuration files that are moved to another location
# should not be marked "obsolete"; they should just be removed from
@@ -83,6 +83,7 @@
./etc/inetd.conf etc-netutil-etc
./etc/iscsi/auths etc-iscsi-etc iscsi
./etc/iscsi/targets etc-iscsi-etc iscsi
+./etc/iscsi/volumes etc-iscsi-etc
./etc/kyua/kyua.conf etc-kyua-etc kyua
./etc/lkm.conf etc-obsolete obsolete
./etc/localtime etc-sys-etc
@@ -238,6 +239,7 @@
./etc/rc.d/irdaattach etc-sys-rc
./etc/rc.d/iscsi_target etc-iscsi-rc
./etc/rc.d/iscsid etc-iscsi-rc
+./etc/rc.d/iscsid_volumes etc-iscsi-rc
./etc/rc.d/isdnd etc-obsolete obsolete
./etc/rc.d/isibootd etc-bootserver-rc
./etc/rc.d/kdc etc-krb5-rc
Index: src/etc/defaults/rc.conf
diff -u src/etc/defaults/rc.conf:1.162 src/etc/defaults/rc.conf:1.163
--- src/etc/defaults/rc.conf:1.162 Sun Feb 20 14:42:07 2022
+++ src/etc/defaults/rc.conf Fri Feb 3 13:53:40 2023
@@ -1,4 +1,4 @@
-# $NetBSD: rc.conf,v 1.162 2022/02/20 14:42:07 alnsn Exp $
+# $NetBSD: rc.conf,v 1.163 2023/02/03 13:53:40 mlelstv Exp $
#
# /etc/defaults/rc.conf --
# default configuration of /etc/rc.conf
@@ -317,6 +317,8 @@ kdc=NO kdc_flags="--detach"
iscsi_target=NO iscsi_target_flags=""
# iSCSI kernel initiator
iscsid=NO
+# iSCSI attach from /etc/iscsi/volumes
+iscsid_volumes=YES
# WPA daemons.
hostapd=NO hostapd_flags="-Bs /etc/hostapd.conf"
Index: src/etc/rc.d/Makefile
diff -u src/etc/rc.d/Makefile:1.116 src/etc/rc.d/Makefile:1.117
--- src/etc/rc.d/Makefile:1.116 Mon Jun 6 10:56:28 2022
+++ src/etc/rc.d/Makefile Fri Feb 3 13:53:40 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.116 2022/06/06 10:56:28 nia Exp $
+# $NetBSD: Makefile,v 1.117 2023/02/03 13:53:40 mlelstv Exp $
.include <bsd.own.mk>
@@ -25,7 +25,7 @@ CONFIGFILES=\
gpio \
hostapd httpd \
identd ifwatchd inetd ip6addrctl ipfilter ipfs ipmon ipnat \
- ipsec irdaattach iscsi_target iscsid isibootd \
+ ipsec irdaattach iscsi_target iscsid iscsid_volumes isibootd \
kdc \
ldconfig ldpd lvmlockdir local lpd lvm \
makemandb mdnsd mixerctl modules mopd motd mountall \
Added files:
Index: src/etc/rc.d/iscsid_volumes
diff -u /dev/null src/etc/rc.d/iscsid_volumes:1.1
--- /dev/null Fri Feb 3 13:53:40 2023
+++ src/etc/rc.d/iscsid_volumes Fri Feb 3 13:53:40 2023
@@ -0,0 +1,110 @@
+#!/bin/sh
+#
+# $NetBSD: iscsid_volumes,v 1.1 2023/02/03 13:53:40 mlelstv Exp $
+#
+
+# PROVIDE: iscsid_volumes
+# REQUIRE: iscsid
+# BEFORE: securelevel mountcritremote
+
+$_rc_subr_loaded . /etc/rc.subr
+
+name="iscsid_volumes"
+rcvar=$name
+start_cmd="iscsid_volumes_start"
+stop_cmd="iscsid_volumes_stop"
+
+iscsid_volumes_start()
+{
+ test -f /etc/iscsi/volumes || return
+
+ while read host target digest auth user alias; do
+ case $host in
+ \#*) ;;
+ *)
+ topts=''
+ case $digest in
+ *d*) topts="$topts -d";;
+ esac
+ case $digest in
+ *h*) topts="$topts -h";;
+ esac
+
+ pass="-"
+ mpass="-"
+
+ while read entry dummy; do
+ case $entry in
+ \#*) ;;
+ "$user":*) pass=${entry#*:} ;;
+ "$target":*) mpass=${entry#*:} ;;
+ esac
+ done < /etc/iscsi/auths
+
+ case $host in
+ *:*)
+ port=${host#*:}
+ host=${host%%:*}
+ ;;
+ *)
+ port=3260
+ ;;
+ esac
+
+ echo "Add target ${alias:-$target}"
+
+ out=$(/sbin/iscsictl add_target$topts \
+ -a "$host" \
+ -p "$port" \
+ -n "$target" \
+ -t "$auth" \
+ -u "$user" \
+ -s "$pass" \
+ -S "$mpass" \
+ -N "${alias:--}")
+ echo "$out"
+
+ case $out in
+ Added\ Target\ [1-9]*,\ Portal\ [1-9]*\ )
+ out=${out% }
+ portal=${out##* }
+ echo "Login $target via Portal $portal"
+ /sbin/iscsictl login -P "$portal"
+ ;;
+ esac
+ esac
+ done < /etc/iscsi/volumes
+}
+
+iscsid_volumes_stop()
+{
+ test -f /etc/iscsi/volumes || return
+
+ while read host target digest auth user alias; do
+ case $host in
+ \#*) ;;
+ *)
+ echo "Remove target ${alias:-$target}"
+
+ /sbin/iscsictl list_sessions \
+ | while read key1 num key2 sesstarget; do
+ if [ x"$key1" = x"Session" -a \
+ x"$key2" = x"Target" -a \
+ x"$sesstarget" = x"$target" ]; then
+ /sbin/iscsictl logout -I "$num" | grep -v '^OK$'
+ fi
+ done
+
+ /sbin/iscsictl list_targets \
+ | while read num talias ttarget; do
+ if [ x"$ttarget" = x"$target" ]; then
+ /sbin/iscsictl remove_target -I "$num"
+ fi
+ done
+ ;;
+ esac
+ done < /etc/iscsi/volumes
+}
+
+load_rc_config $name
+run_rc_command "$1"