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
# 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>