The patch below enables compilation of the SRPT driver with the 2.6.26.x kernel.
[mirror/scst/.git] / srpt / README
1 SCSI RDMA Protocol (SRP) Target driver for Linux
2 =================================================
3
4 The SRP Target driver is designed to work directly on top of the
5 OpenFabrics OFED-1.x software stack (http://www.openfabrics.org) or
6 the Infiniband drivers in the Linux kernel tree
7 (http://www.kernel.org). The SRP target driver also interfaces with
8 the generic SCSI target mid-level driver called SCST
9 (http://scst.sourceforge.net).
10
11 NOTES: This SRP Target driver can only be compiled and will only work
12 with the IB drivers in the vanilla Linux kernel. It does not compile
13 and work with the IB drivers included in any of the OFED-1.x packages.
14
15 If you want to work with the IB drivers in one of the OFED-1.x
16 packages, you should read and follow instruction in README.ofed file.
17
18
19 Installation
20 ------------
21 If you have obtained SCST from the SCST SVN repository as an out-of-tree
22 kernel subsystem, proceed as follows to compile and install the SRP target
23 driver:
24
25 $ make 
26 $ make install
27
28 To minimize QUEUEFULL conditions, please apply scst_increase_max_tgt_cmds
29 patch and recompile scst
30
31 $ cd ~scst/trunk
32 $ patch -p0 < srpt/patches/scst_increasa_max_tgt_cmds.patch
33 $ make scst scst_install srpt srpt_install
34
35 On the other hand, if you have obtained the SCST source code included
36 with the Linux kernel source code, enable and build the SRP target driver
37 in the same way as any other kernel module. Make sure to enable SCST itself
38 and InfiniBand before attempting to enable the SRP target driver.
39
40 How-to run
41 -----------
42 A. On srp target machine
43 1. Please refer to SCST's README for loading scst driver and its
44 dev_handlers drivers (scst_disk, scst_vdisk block or file IO mode, nullio, ...)
45
46 Example 1: working with real back-end scsi disks
47 a. modprobe scst
48 b. modprobe scst_disk
49 c. cat /proc/scsi_tgt/scsi_tgt
50
51 ibstor00:~ # cat /proc/scsi_tgt/scsi_tgt 
52 Device (host:ch:id:lun or name)                             Device handler
53 0:0:0:0                                                     dev_disk
54 4:0:0:0                                                     dev_disk
55 5:0:0:0                                                     dev_disk
56 6:0:0:0                                                     dev_disk
57 7:0:0:0                                                     dev_disk
58
59 Now you want to exclude the first scsi disk and expose the last 4 scsi disks as
60 IB/SRP luns for I/O
61 echo "add 4:0:0:0 0" >/proc/scsi_tgt/groups/Default/devices
62 echo "add 5:0:0:0 1" >/proc/scsi_tgt/groups/Default/devices
63 echo "add 6:0:0:0 2" >/proc/scsi_tgt/groups/Default/devices
64 echo "add 7:0:0:0 3" >/proc/scsi_tgt/groups/Default/devices
65
66 Example 2: working with VDISK FILEIO mode (using md0 device and file 10G-file)
67 a. modprobe scst
68 b. modprobe scst_vdisk
69 c. echo "open vdisk0 /dev/md0" > /proc/scsi_tgt/vdisk/vdisk
70 d. echo "open vdisk1 /10G-file" > /proc/scsi_tgt/vdisk/vdisk
71 e. echo "add vdisk0 0" >/proc/scsi_tgt/groups/Default/devices
72 f. echo "add vdisk1 1" >/proc/scsi_tgt/groups/Default/devices
73
74 Example 3: working with VDISK BLOCKIO mode (using md0 device, sda, and cciss/c1d0)
75 a. modprobe scst
76 b. modprobe scst_vdisk
77 c. echo "open vdisk0 /dev/md0 BLOCKIO" > /proc/scsi_tgt/vdisk/vdisk
78 d. echo "open vdisk1 /dev/sda BLOCKIO" > /proc/scsi_tgt/vdisk/vdisk
79 e. echo "open vdisk2 /dev/cciss/c1d0 BLOCKIO" > /proc/scsi_tgt/vdisk/vdisk
80 f. echo "add vdisk0 0" >/proc/scsi_tgt/groups/Default/devices
81 g. echo "add vdisk1 1" >/proc/scsi_tgt/groups/Default/devices
82 h. echo "add vdisk2 2" >/proc/scsi_tgt/groups/Default/devices
83
84 2. modprobe ib_srpt
85
86
87 B. On initiator machines you can manualy do the following steps:
88 1. modprobe ib_srp
89 2. ipsrpdm -c (to discover new SRP target)
90 3. echo <new target info> > /sys/class/infiniband_srp/srp-mthca0-1/add_target
91 4. fdisk -l (will show new discovered scsi disks)
92
93 Example:
94 Assume that you use port 1 of first HCA in the system ie. mthca0
95
96 [root@lab104 ~]# ibsrpdm -c -d /dev/infiniband/umad0
97 id_ext=0002c90200226cf4,ioc_guid=0002c90200226cf4,
98 dgid=fe800000000000000002c90200226cf5,pkey=ffff,service_id=0002c90200226cf4
99 [root@lab104 ~]# echo id_ext=0002c90200226cf4,ioc_guid=0002c90200226cf4,
100 dgid=fe800000000000000002c90200226cf5,pkey=ffff,service_id=0002c90200226cf4 >
101 /sys/class/infiniband_srp/srp-mthca0-1/add_target
102
103 OR
104
105 + You can edit /etc/infiniband/openib.conf to load srp driver and srp HA daemon
106 automatically ie. set SRP_LOAD=yes, and SRPHA_ENABLE=yes
107 + To set up and use high availability feature you need dm-multipath driver
108 and multipath tool
109 + Please refer to OFED-1.x SRP's user manual for more in-details instructions
110 on how-to enable/use HA feature
111
112
113 TO DO
114 ------
115 + Stress test and stabilize the code
116 + Performance tuning