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"

Reply via email to