Also fix error when not typing anything when asked if to add lun to the existing target. Signed-off-by: Roi Dayan <roid@xxxxxxxxxxxx> --- Hi, please review. this is for ticket http://redmine.mtl.com/issues/130493 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html