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 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@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html