From 1853ab83a2d11e7db6f4505e8262269217da3cc4 Mon Sep 17 00:00:00 2001 From: bvassche Date: Fri, 7 Aug 2009 14:14:19 +0000 Subject: [PATCH] Updated SRPT documentation. git-svn-id: https://scst.svn.sourceforge.net/svnroot/scst/trunk@1024 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- srpt/README.ofed | 1 + srpt/Testing.txt | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ srpt/ToDo | 31 +++++++------------------- 3 files changed, 67 insertions(+), 23 deletions(-) create mode 100644 srpt/Testing.txt diff --git a/srpt/README.ofed b/srpt/README.ofed index 57c8770..7ff023e 100644 --- a/srpt/README.ofed +++ b/srpt/README.ofed @@ -53,6 +53,7 @@ Unload any loaded InfiniBand drivers: Remove any distro-provided InfiniBand drivers: rm -rf /lib/modules/$(uname -r)/kernel/drivers/infiniband + rm -rf /lib/modules/$(uname -r)/kernel/drivers/net/mlx4 Now locate the file Makefile.lib and patch it such that it supports the variable PRE_CFLAGS: diff --git a/srpt/Testing.txt b/srpt/Testing.txt new file mode 100644 index 0000000..fc8c688 --- /dev/null +++ b/srpt/Testing.txt @@ -0,0 +1,58 @@ +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 < /sys/class/infiniband_srp/srp-mlx4_0-1/add_target; sleep 2; done + + and verify that nothin unexpected happens. diff --git a/srpt/ToDo b/srpt/ToDo index 9901cb4..9353ef2 100644 --- a/srpt/ToDo +++ b/srpt/ToDo @@ -4,33 +4,18 @@ 2. The SRPT driver directly uses the internal state of the SCST core target - state machine (scmnd->state), which is bad, bad, bad and generally not - acceptable. Only dev handler are allowed to use them. This should be fixed. + state machine (scmnd->state field / SCST_CMD_STATE_* values), which is bad, + bad, bad and generally not acceptable. Only dev handler are allowed to use + them. This should be fixed: the SRPT driver should keep its internal state + in an SRPT-specific variable. For an example, see also the "Q2T_STATE_" + constants in the qla2x00t driver, and especially the function + q2t_do_ctio_completion(). -3. Fix the race condition between srpt_refresh_port_work() and - srpt_remove_one(). Although the probability that this happens is very low, - at least in theory it is possible that srpt_refresh_port_work() gets - called for a port after srpt_remove_one() called kfree() on the data - structure that contains the work_struct passed to srpt_refresh_port_work(). - It's not clear to me whether or not letting srpt_remove_one() wait until - srpt_refresh_work() finished can result in a deadlock. - - -4. Find out from which threads the srpt_devices list can be accessed and - whether it has to be protected by a spinlock or mutex. - - -5. Fix the issue that 'rmmod ib_srpt' under load hangs. - - -6. The initiator names supplied to the SCST core contain the target port name, +3. The initiator names supplied to the SCST core contain the target port name, which is wrong. Nobody identifies a man by the door through which he entered. Instead, a man has a name by which he is identified through his whole life. -7. Analyze and document the implications of +4. Analyze and document the implications of sdev->mr = ib_get_dma_mr(sdev->pd, IB_ACCESS_LOCAL_WRITE). - - -8. Enable and test the LUN_RESET task management function. -- 2.17.1