I) Introduction: ************************************************************************************** WARNING: THIS SCRIPT WILL REQUIRES THAT /etc/sysconfig/initiator FILE NOT EXIST. WARNING: THIS SCRIPT DEPENDING ON CONFIGURATION WILL ISSUE WRITES TO THE ISCSI LUN IN QUESTION. WARNING: DO NOT RUN THIS SCRIPT IN A PRODUCTION ENVIRONMENT. THIS SCRIPT IS USED TO PERFORM DOMAIN VALIDATION ON ISCSI TARGET NODE ENDPOINTS WITH INCREMENTAL COMBINITIONS OF RFC-3720 PARAMETER KEYS. PLEASE SEE SECTION 12 OF THIS RFC FOR MORE INFORMATION OF MEANING OF SAID KEYS. Each time the script is invoked for passed iSCSI channel, it will perform login/logout based on the number of iterations from the enabled keys. Upon a successful establishment of an iSCSI nexus an validation using the determine configuration, a userspace program wil be run on the block device translated from the Channel+LUN tuple (ie: /dev/sd*). The ordering of the enabled keys is located in main loop of core-iscsi-dv.sh. It will halt the execution of the next nexus configuration when any non-zero status event occurs. ************************************************************************************** II) core-iscsi-dv.sh usage: Runs defined combinitions of traditional iSCSI (RFC-3720) parameters by generating core-iscsi /etc/sysconfig/initiator. It will then start/stop from a passed iSCSI Initiator Channel from /etc/sysconfig/initiator until an exception or otherwise non-successful start/stop. Once the session has been established, the script will can call various CLI tools to perform IO on the block device and return status. Currently two dd_read and surface_test routines defined. The iSCSI connection count for the established nexus is currently hardcoded to CONN_COUNT=1 This value can be changed for target nodes supporting MC/S. The usage of this script with target nodes that DO NOT support MC/S is undefined and untested. An known bug exists with MaxRecvDataSegmentLength in core-iscsi v1.6.2.x, please refer to http://groups.google.com/group/Core-iSCSI/browse_frm/thread/a0b66ade9417b738/79c039a6a2f7a940 Support for value-lists of FIM in A.1 of RFC-3720 has TODO status. A) Usage: /sbin/core-iscsi-dv.sh $ISCSI_CHANNEL $ISCSI_LUN The CHANNEL needs to be uninitialized, and perferrable the iscsi_initiator_mod.ko module unloaded before invoking the script. If /etc/sysconfig/initiator exists when the script is invokead an exception will occur. Please backup and remove your /etc/sysconfig/initiator if you wish to use core-iscsi-dv. B) Enabling/disabling parameter keys: The default usage (2k loop iterations): cat /sbin/core-iscsi-dv.sh | grep _enable= DefaultTime2Wait_enable=0; DefaultTime2Retain_enable=0; HeaderDigest_enable=1; DataDigest_enable=1; MaxRecvDataSegmentLength_enable=1; ErrorRecoveryLevel_enable=0 IFMarker_enable=0 # TODO OFMarker_enable=0 # TODO IFMarkInt_enable=0 # TODO OFMarkInt_enable=0 # TODO DataPDUInOrder_enable=0 DataSequenceInOrder_enable=0 FirstBurstLength_enable=0 MaxBurstLength_enable=0 MaxOutstandingR2T_enable=0 ImmediateData_enable=0 InitialR2T_enable=0 Additional upper-limit values can be defined for keys that accept a numerical value: cat /sbin/core-iscsi-dv.sh | grep _end= DefaultTime2Wait_end=65536; DefaultTime2Retain_end=65536; MaxRecvDataSegmentLength_end=262144; ErrorRecoveryLevel_end=2 FirstBurstLength_end=262144 MaxBurstLength_end=262144 MaxOutstandingR2T_end=16 Thanks! -- nab@kernel.org