[stgt] tgt-admin behavior with multiple targets and same account name

Chandra Seetharaman sekharan at us.ibm.com
Mon Mar 1 23:00:14 CET 2010


Hello,

I defined two targets in my /etc/tgt/targets.conf file and have the same
username/password (incoming and outgoing) for both the targets.

After running "tgt-admin -e", I see that the "Account Information" on my
first target is empty.

Looking at the script (tgt-admin), I found that it deletes the account
before defining an account, which is the cause of the problem I am
seeing. 

Can somebody tell me why it is implemented that way (instead of using
the existing account) ? 

I couldn't find anything in the SPECS (RFC 3270) about multiple targets
having the same username/password. Please send me a snippet if it is
otherwise. (Even if that is the case, shouldn't we be failing the second
operation instead of silently removing the old one ?)

Thanks,

chandra
Attachment: my targets.conf file
 
-------------- next part --------------
# This is a sample config file for tgt-admin.
# By default, tgt-admin looks for its config file in /etc/tgt/targets.conf
#
# The "#" symbol disables the processing of a line.


# This one includes other config files:

#include /etc/tgt/temp/*.conf


# Set the driver. If not specified, defaults to "iscsi".

default-driver iscsi


# Continue if tgtadm exits with non-zero code (equivalent of
# --ignore-errors command line option)
ignore-errors yes


# Sample target with one LUN only. Defaults to allow access for all initiators:

#<target iqn.2008-09.com.example:server.target1>
#    backing-store /dev/LVM/somedevice
#</target>


# Similar, but we use "direct-store" instead of "backing-store".
# "direct-store" reads drive parameters with sg_inq command and sets them to
# the target.
# Parameters fatched with sg_inq are:
# - Vendor identification
# - Product identification
# - Product revision level
# - Unit serial number (if present)
# We also specify "incominguser".

#<target iqn.2008-09.com.example:server.target2>
#    direct-store /dev/sdd
#    incominguser someuser secretpass12
#</target>


# An example with multiple LUNs, disabled write-cache (tgtd enables write-cache
# by default) and vendor identification set to "MyVendor"

#<target iqn.2008-09.com.example:server.target3>
#    backing-store /dev/LVM/somedevice1	# Becomes LUN 1
#    backing-store /dev/LVM/somedevice2	# Becomes LUN 2
#    backing-store /dev/LVM/somedevice3	# Becomes LUN 3
#    write-cache off
#    vendor_id MyCompany Inc.
#</target>


# Similar to the one above, but we fetch vendor_id, product_id, product_rev and
# scsi_sn from the disks.
# Vendor identification (vendor_id) is replaced in all disks by "MyVendor"

#<target iqn.2008-09.com.example:server.target4>
#    direct-store /dev/sdb	# Becomes LUN 1
#    direct-store /dev/sdc	# Becomes LUN 2
#    direct-store /dev/sdd	# Becomes LUN 3
#    write-cache off
#    vendor_id MyCompany Inc.
#</target>


# Note that "first-device-first-lun numbering" will work only for simple
# scenarios above, where _only_ direct-store _or_ backing-store is used.
# If you mix backing-store and direct-store, then all backing-store entries
# are processed before direct-store-entries.

#<target iqn.2008-09.com.example:server.target4>
#    direct-store /dev/sdb	# Becomes LUN 3
#    backing-store /dev/sdc	# Becomes LUN 1
#    direct-store /dev/sdd	# Becomes LUN 4
#    backing-store /dev/sde	# Becomes LUN 2
#</target>


# Even more complicated example - each device has different parameters.
# You can use indentation to make the config file more readable.
# Note that LUNs will be assigned more or less randomly here (and still
# backing-store get LUNs assigned before drect-store).
# You can specify multiple mode_page parameters (they are commented out
# in this example).
# Note that some parameters (write-cache, scsi_sn) were specified "globally".
# "Global" parameters will be applied to all LUNs; they can be overwritten
# "locally", per LUN.
# If lun is not specified, it will be allocated automatically (first available).

#<target iqn.2008-09.com.example:server.target5>

#    <direct-store /dev/sdd>
#	vendor_id VENDOR1
#	removable 1
#	device-type cd
#	lun 1
#    </direct-store>

#    <direct-store /dev/sda>
#	vendor_id VENDOR2
#	lun 2
#    </direct-store>

#    <backing-store /dev/sdb1>
#	vendor_id back1
#	scsi_sn SERIAL
#	write-cache on
	# lun 3		# lun is commented out - will be allocated automatically
#   </backing-store>

#    <backing-store /dev/sdd1>
#	vendor_id back2
	#mode_page 8:0:18:0x10:0:0xff....
	#mode_page 8:0:18:0x10:0:0xff....
	#bs-type aio
#	lun 15
#    </backing-store>

    # Some more parameters which can be specified locally or globally:
    #scsi_id ...
    #scsi_sn ...
    #vendor_id ...
    #product_id ...
    #product_rev ...
    #sense_format ...
    #removable ...
    #online ...
    #path ...
    #mode_page 8:0:18:0x10:0:0xff....
    #mode_page 8:0:18:0x10:0:0xff....
    #device-type ...
    #bs-type ...	# backing store type - default rdwr, can be aio, mmap, etc...
    #allow-in-use yes	# if specified globally, can't be overwritten locally

#    write-cache off
#    scsi_sn multipath-10

    # Parameters below are only global. They can't be configured per LUN.
    # Only allow connections from 192.168.100.1 and 192.168.200.5
#    initiator-address 192.168.100.1
#    initiator-address 192.168.200.5

    # Tuning parameters (global, per target)
    #MaxRecvDataSegmentLength 8192
    #MaxXmitDataSegmentLength 8192
    #HeaderDigest None
    #DataDigest None
    #InitialR2T Yes
    #MaxOutstandingR2T 1
    #ImmediateData Yes
    #FirstBurstLength 65536
    #MaxBurstLength 262144
    #DataPDUInOrder Yes
    #DataSequenceInOrder Yes
    #ErrorRecoveryLevel 0
    #IFMarker No
    #OFMarker No
    #DefaultTime2Wait 2
    #DefaultTime2Retain 20
    #OFMarkInt Reject
    #IFMarkInt Reject
    #MaxConnections 1

    # Allowed incoming users
#    incominguser user1 secretpass12
#    incominguser user2 secretpass23

    # Outgoing user
#    outgoinguser userA secretpassA

#</target>


# The device will have lun 1 unless you specify something else
#<target iqn.2008-09.com.example:server.target6>
#    backing-store /dev/LVM/somedevice
#    lun 10
#</target>


# Devices which are in use (by system: mounted, for swap, part of RAID, or by
# userspace: dd, by tgtd for another target etc.) can't be used, unless you use
# --force flag or add 'allow-in-use yes' option
#<target iqn.2008-09.com.example:server.target7>
#    backing-store /dev/LVM/somedevice
#    allow-in-use yes
#</target>

#<target iqn.2008-09.com.example:server.target8>
#    <backing-store /dev/LVM/somedevice>
#        scsi_sn serial1
#    </backing-store>

#    <backing-store /dev/LVM/somedevice2>
#        scsi_sn serial2
#    </backing-store>

#    allow-in-use yes
#</target>





# Not supported configurations, and therefore, commented out:

#<target iqn.2008-09.com.example:server.target9>
#    backing-store /dev/LVM/somedevice1
#    backing-store /dev/LVM/somedevice2
#    lun 10
#    lun 11
#</target>

#<target iqn.2008-09.com.example:server.target10>
#    <direct-store /dev/sdd>
#        vendor_id VENDOR1
#    </direct-store>
#
#    direct-store /dev/sdc
#</target>

# This one will break the parser:

#<target iqn.2008-09.com.example:server.target11>
#    <direct-store /dev/sdd>
#        vendor_id VENDOR1
#    </direct-store>
#
#    direct-store /dev/sdc
#
#    <direct-store /dev/sdd>
#        vendor_id VENDOR1
#    </direct-store>
#</target>

<target iqn.2010-02.com.test244_test:01>
        # List of files to export as LUNs
        <backing-store /device1/file1>
		vendor_id test244
		product_id target1
		scsi_id test244_target1_lun1
		lun 1
	</backing-store>

        <backing-store /device1/file2>
		vendor_id test244
		product_id target1
		scsi_id test244_target1_lun2
		lun 2
	</backing-store>

        <backing-store /device1/file3>
		vendor_id test244
		product_id target1
		scsi_id test244_target1_lun3
		lun 3
	</backing-store>

        # Authentication :
        # if no "incominguser" is specified, it is not used
        outgoinguser seller testpassw0rd
        incominguser customer Longsw0rd

        # Access control :
        # defaults to ALL if no "initiator-address" is specified
        initiator-address 10.0.0.146
</target>
<target iqn.2010-02.com.test244_test:02>
        # List of files to export as LUNs
        <backing-store /device1/file4>
		vendor_id test244
		product_id target2
		scsi_id test244_target2_lun1
		lun 1
	</backing-store>

        <backing-store /device1/file5>
		vendor_id test244
		product_id target2
		scsi_id test244_target2_lun2
		lun 2
	</backing-store>

        # Authentication :
        # if no "incominguser" is specified, it is not used
        outgoinguser seller testpassw0rd
        incominguser customer Longsw0rd

        # Access control :
        # defaults to ALL if no "initiator-address" is specified
        initiator-address 10.0.0.146
</target>


More information about the stgt mailing list