mirror of
https://github.com/SCST-project/scst.git
synced 2026-05-17 10:41:26 +00:00
By this time I have reworked the update of scripts/generate-kernel-patch'>scripts/generate-kernel-patch. These are the changes that were already present in version 1 of this patch and that have been kept in this patch: - The SCST code has been moved from drivers/scsi/scsi_tgt to drivers/scst. - Moved SCST header files from include/scsi_tgt to include/scst. - Added iscsi-scst in drivers/scst/iscsi-scst. For the time being the generate-kernel-patch does no longer try to add the qla2x00t driver in drivers/scst/qla2x00-target -- I have not yet been able to figure out how to get qla2x00t/qla2x00-target compiled without the initiator code. Just as in version 1 of this patch, the following files in the Subversion repository have been renamed to reflect the above changes: - Renamed scst/kernel/in-tree/Makefile.scsi.Linux-2.6.24.patch'>scst/kernel/in-tree/Makefile.scsi.Linux-2.6.24.patch to scst/kernel/in-tree/Makefile.drivers.Linux-2.6.24.patch'>scst/kernel/in-tree/Makefile.drivers.Linux-2.6.24.patch. - Renamed Kconfig'>scst/kernel/in-tree/Kconfig.scsi.Linux-2.6.24.patch to scst/kernel/in-tree/Kconfig.drivers.Linux-2.6.24.patch'>scst/kernel/in-tree/Kconfig.drivers.Linux-2.6.24.patch. - Renamed scst/kernel/in-tree/Makefile.scsi_tgt'>scst/kernel/in-tree/Makefile.scsi_tgt to scst/kernel/in-tree/Makefile.scst'>scst/kernel/in-tree/Makefile.scst. - Renamed scst/kernel/in-tree/Kconfig.scsi_tgt'>scst/kernel/in-tree/Kconfig.scsi_tgt to scst/kernel/in-tree/Kconfig.scst'>scst/kernel/in-tree/Kconfig.scst. Because of the above changes the include path specified in the following Makefiles had to be changed: - scst/kernel/in-tree/Makefile.dev_handlers'>scst/kernel/in-tree/Makefile.dev_handlers - srpt/src/Makefile.in_kernel'>srpt/src/Makefile.in_kernel Other changes: - I have added menu/endmenu entries in file scst/kernel/in-tree/Kconfig.scst such that the SCST entries become visible when running make xconfig or make menuconfig. - Elaborated the SCST help texts a little bit (in file scst/kernel/in-tree/Kconfig.scst). New in version 2 of this patch: - Moved remaining patches in the generate-kernel-patch script to separate files. - Added support for the 2.6.25 kernel. This patch has been tested as follows: mkdir -p tmp cd tmp rm -rf linux-2.6.25.3 /lib/modules/2.6.25.3-scst tar xjf ~vanasscb/software/downloads/linux-2.6.25.3.tar.bz2 cd linux-2.6.25.3 cp ../.config-2.6.25 . (cd ~vanasscb/software/scst && ~vanasscb/software/scst/scripts/generate-kernel-patch \ 2.6.25) | patch -p1 make oldconfig diff ../.config . make xconfig make menuconfig make -j5 bzImage modules make modules_install install cp -r /lib/firmware/$(uname -r) /lib/firmware/2.6.25.3-scst update-initramfs -k 2.6.25.3-scst -c reboot modprobe iscsi-scst modprobe ib_srpt lsmod | grep -E 'scst|ib_srpt' dmesg Signed-off-by: bart.vanassche@gmail.com git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@373 d57e44dd-8a1f-0410-8b47-8ef2f437770f
SCSI RDMA Protocol (SRP) Target driver for Linux
=================================================
SRP Target driver is designed to work directly on top of OpenFabrics
OFED-1.x software stack (http://www.openfabrics.org) or Infiniband
drivers in Linux kernel tree (kernel.org). It also interfaces with
Generic SCSI target mid-level driver - SCST (http://scst.sourceforge.net)
NOTES: This SRP Target driver can only compile and work with IB driver
in Linux vanilla kernel. It does not compile and work with IB
driver in OFED-1.x packages
If you want to work with IB driver in OFED-1.x package, you should
read and follow instruction in README.ofed file
Installation
------------
$ make
$ make install
To minimize QUEUEFULL conditions, please apply scst_increase_max_tgt_cmds
patch and recompile scst
$ cd ~scst/trunk
$ patch -p0 < srpt/patches/scst_increasa_max_tgt_cmds.patch
$ make scst scst_install srpt srpt_install
How-to run
-----------
A. On srp target machine
1. Please refer to SCST's README for loading scst driver and its
dev_handlers drivers (scst_disk, scst_vdisk block or file IO mode, nullio, ...)
Example 1: working with real back-end scsi disks
a. modprobe scst
b. modprobe scst_disk
c. cat /proc/scsi_tgt/scsi_tgt
ibstor00:~ # cat /proc/scsi_tgt/scsi_tgt
Device (host:ch:id:lun or name) Device handler
0:0:0:0 dev_disk
4:0:0:0 dev_disk
5:0:0:0 dev_disk
6:0:0:0 dev_disk
7:0:0:0 dev_disk
Now you want to exclude the first scsi disk and expose the last 4 scsi disks as
IB/SRP luns for I/O
echo "add 4:0:0:0 0" >/proc/scsi_tgt/groups/Default/devices
echo "add 5:0:0:0 1" >/proc/scsi_tgt/groups/Default/devices
echo "add 6:0:0:0 2" >/proc/scsi_tgt/groups/Default/devices
echo "add 7:0:0:0 3" >/proc/scsi_tgt/groups/Default/devices
Example 2: working with VDISK FILEIO mode (using md0 device and file 10G-file)
a. modprobe scst
b. modprobe scst_vdisk
c. echo "open vdisk0 /dev/md0" > /proc/scsi_tgt/vdisk/vdisk
d. echo "open vdisk1 /10G-file" > /proc/scsi_tgt/vdisk/vdisk
e. echo "add vdisk0 0" >/proc/scsi_tgt/groups/Default/devices
f. echo "add vdisk1 1" >/proc/scsi_tgt/groups/Default/devices
Example 3: working with VDISK BLOCKIO mode (using md0 device, sda, and cciss/c1d0)
a. modprobe scst
b. modprobe scst_vdisk
c. echo "open vdisk0 /dev/md0 BLOCKIO" > /proc/scsi_tgt/vdisk/vdisk
d. echo "open vdisk1 /dev/sda BLOCKIO" > /proc/scsi_tgt/vdisk/vdisk
e. echo "open vdisk2 /dev/cciss/c1d0 BLOCKIO" > /proc/scsi_tgt/vdisk/vdisk
f. echo "add vdisk0 0" >/proc/scsi_tgt/groups/Default/devices
g. echo "add vdisk1 1" >/proc/scsi_tgt/groups/Default/devices
h. echo "add vdisk2 2" >/proc/scsi_tgt/groups/Default/devices
2. modprobe ib_srpt
B. On initiator machines you can manualy do the following steps:
1. modprobe ib_srp
2. ipsrpdm -c (to discover new SRP target)
3. echo <new target info> > /sys/class/infiniband_srp/srp-mthca0-1/add_target
4. fdisk -l (will show new discovered scsi disks)
Example:
Assume that you use port 1 of first HCA in the system ie. mthca0
[root@lab104 ~]# ibsrpdm -c -d /dev/infiniband/umad0
id_ext=0002c90200226cf4,ioc_guid=0002c90200226cf4,
dgid=fe800000000000000002c90200226cf5,pkey=ffff,service_id=0002c90200226cf4
[root@lab104 ~]# echo id_ext=0002c90200226cf4,ioc_guid=0002c90200226cf4,
dgid=fe800000000000000002c90200226cf5,pkey=ffff,service_id=0002c90200226cf4 >
/sys/class/infiniband_srp/srp-mthca0-1/add_target
OR
+ You can edit /etc/infiniband/openib.conf to load srp driver and srp HA daemon
automatically ie. set SRP_LOAD=yes, and SRPHA_ENABLE=yes
+ To set up and use high availability feature you need dm-multipath driver
and multipath tool
+ Please refer to OFED-1.x SRP's user manual for more in-details instructions
on how-to enable/use HA feature
TO DO
------
+ Stress test and stabilize the code
+ Performance tuning