[stgt] [PATCH] Update tgt-setup-lun not to fail when adding lun to existing target

Roi Dayan roid at mellanox.com
Thu Jan 24 19:54:45 CET 2013


Also fix error when not typing anything when asked if to add
lun to the existing target.

Signed-off-by: Roi Dayan <roid at mellanox.com>
---

Hi Tomo,

Sorry for prev email. description was ment for someone else.
The patch will fix error when trying to add lun to exisiting target.
The script tried to add exisiting records to access list.
Thie commit will fix this.

Thanks,
Roi



 scripts/tgt-setup-lun |   53 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/scripts/tgt-setup-lun b/scripts/tgt-setup-lun
index bd795d6..1a719eb 100755
--- a/scripts/tgt-setup-lun
+++ b/scripts/tgt-setup-lun
@@ -120,6 +120,44 @@ find_vacant_lun()
 	return $next_vacant_lun
 }
 
+get_acl() {
+	tid=$1
+	tgt_found=0
+	acl_found=0
+	next_vacant_lun=0
+	tmp_file=/tmp/target_list.txt
+	local _acl=""
+
+	$TGTADM --lld $lld_name --op show --mode target > $tmp_file
+
+	while read line; do
+		# Check if we finished going over this target
+		if ((tgt_found == 1 && $(echo $line | grep -c "^Target") == 1)); then
+			break
+		fi
+
+		# Check if we found the requested target
+		if (($(echo $line | grep -c "Target $tid:") == 1)); then
+			tgt_found=1
+			continue
+		fi
+
+		if ((tgt_found == 1 && $(echo $line | grep -c "ACL information") == 1)); then
+			acl_found=1
+			continue
+		fi
+
+		if ((tgt_found == 1 && acl_found == 1)); then
+			curr_acl=$(echo $line)
+			_acl=`echo $_acl $curr_acl`
+		fi
+	done < $tmp_file
+
+	rm -f $tmp_file
+
+	echo $_acl
+}
+
 err_exit()
 {
 	if ((new_tgt == 0)); then
@@ -208,7 +246,7 @@ check_if_tgt_exists
 if [ $? -eq 1 ]; then
 	echo "Error: target named $tgt_name already exists"
 	read -p "Add a new lun to the existing target? (yes/NO): " add_lun
-	if [ $add_lun != "yes" ]; then
+	if [ "$add_lun" != "yes" ]; then
 		exit 1
 	fi
 	tid=$($TGTADM --lld $lld_name --op show --mode target | grep $tgt_name | cut -d" " -f2)
@@ -248,10 +286,16 @@ if [ $res -ne 0 ]; then
 fi
 
 # Define which initiators can use this target
+tgt_acl=`get_acl $tid`
 if test "$initiators" ; then
 	# Allow access only for specific initiators
-	echo "Accepting connections only from $initiators"
+	echo "Accepting connections from $initiators"
 	for initiator in $initiators; do
+		# Check if record already exists
+		if ((`echo $tgt_acl | grep -c "\b$initiator\b"` == 1)) ; then
+			continue
+		fi
+
 		$TGTADM --lld $lld_name --op bind --mode target --tid $tid -I $initiator
 		res=$?
 
@@ -260,6 +304,11 @@ if test "$initiators" ; then
 		fi
 	done
 else
+	# Check if record already exists
+	if ((`echo $tgt_acl | grep -c "\bALL\b"` == 1)) ; then
+		exit 0
+	fi
+
 	# Allow access for everyone
 	echo "Accepting connections from all initiators"
 	$TGTADM --lld $lld_name --op bind --mode target --tid $tid -I ALL
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list