The following tests must be run at least before releasing a new SRPT version: * Make sure that SRPT compiles and installs without triggering any compiler warning. Use the following command to compile and install SRPT: for d in scst srpt; do make -C $d -s clean && make -C $d -s install; done * Verify the output of run-regression-tests for kernel versions starting at 2.6.23 up to and including the latest released kernel. * Verify that SRPT compiles, installs and works fine when following the instructions in README.ofed for the latest released OFED distribution and at the latest released CentOS, Ubuntu and openSUSE distributions. * Verify that module loading and unloading works fine. * Verify that rejecting logins does not trigger a memory leak, e.g. as follows: * Run the following command on the target system: ${SCST_TRUNK}/scripts/monitor-memory-usage | tee memlog.txt * Run the following command on the initiator system: for ((i=0;i<100000;i++)); do echo 'id_ext=0002c9030003cca2,ioc_guid=0002c9030003cca2,pkey=ffff,dgid=fe800000000000000002c9030003cca3,service_id=0002c9030003cca3' >/sys/class/infiniband_srp/srp-mlx4_0-1/add_target ; done * Verify that an I/O stress test runs fine by running the following command on an initiator system after having created two partitions: fio --bs=1M --direct=1 --ioengine=sync --verify=meta --rw=write --verify_fatal=1 --verify_async=1 --loops=10 --name=partition1 --filename=/dev/sdb1 --name=partition2 --filename=/dev/sdb2 * Another I/O stress test: (initiator) Write data pattern: lmdd if=internal of=/dev/sdb opat=1 bs=1M count=1000 (target) Verify data: lmdd if=/dev/exported-block of=internal ipat=1 bs=1M count=1000 mismatch=1 (initiator) Verify data: lmdd if=/dev/sdb of=internal ipat=1 bs=1M count=1000 mismatch=1 for ((i=0;i<40;i++)); do lmdd if=/dev/sdb of=internal ipat=1 bs=1M count=1000 mismatch=1 & done * Verify that a SCSI reset works properly by running the following command on an initiator system: sg_reset -d ${initiator_device} * Run the following command on a target system: while true; do /etc/init.d/scst stop; sleep 3; /etc/init.d/scst start; sleep 5; done and the following commands on an initiator system: target_id="id_ext=0002c9030003cca2,ioc_guid=0002c9030003cca2,dgid=fe800000000000000002c9030003cca3,pkey=ffff,service_id=0009030003cca2,ioc_guid=0002c9030003cca2,dgid=fe800000000000000002c9030003cca3,pkey=ffff,service_id=0002c9030003cca2" while true; do date; rmmod ib_srp; modprobe ib_srp; echo "${target_id}" > /sys/class/infiniband_srp/srp-mlx4_0-1/add_target; sleep 2; done and verify that nothing unexpected happens. * Log in twice from an initiator system, and verify that the first session receives a DREQ upon the second login: target_id="id_ext=0002c9030003cca2,ioc_guid=0002c9030003cca2,dgid=fe800000000000000002c9030003cca3,pkey=ffff,service_id=0009030003cca2,ioc_guid=0002c9030003cca2,dgid=fe800000000000000002c9030003cca3,pkey=ffff,service_id=0002c9030003cca2" dmesg -c echo "${target_id}" > /sys/class/infiniband_srp/srp-mlx4_0-1/add_target dmesg -c echo "${target_id}" > /sys/class/infiniband_srp/srp-mlx4_0-1/add_target dmesg -c echo "${target_id}" > /sys/class/infiniband_srp/srp-mlx4_0-1/add_target * Test low memory conditions: load SRPT, reduce the amount of available memory by creating a large file on a tmpfs file system and run a stress test on an initiator system. * Test the state machine for SCST commands in SRPT by using SCST's error injection mechanism. Add the following to scst/src/Makefile, log in from an initiator system and trigger SRP I/O: EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG -g EXTRA_CFLAGS += -DCONFIG_SCST_DEBUG_TM -DCONFIG_SCST_TM_DBG_GO_OFFLINE * Test with multiple values of ib_srp_tablesize in the range 1..128.