SourceForge.net Logo

Generic SCSI Target Middle Level for Linux

The SCSI target mid-level subsystem for Linux (SCST) is a subsystem of the Linux kernel that provides a standard framework for SCSI target drivers development. It is designed to provide unified, consistent interface between SCSI target drivers and Linux kernel and simplify target drivers development as much as possible. A system with a SCSI target device is able to share its local or virtual devices with other systems on a network with SCSI protocol support, e.g. SCSI bus, Fibre Channel, TCP/IP with iSCSI. This is commonly used for data storage virtualization.

SCST has the following features:

Interoperability between SCST and local SCSI initiators (i.e. sd, st, etc.) is the additional issue that SCST is going to address (it is not implemented yet). It is necessary, because local SCSI initiators can change the state of the device, for example RESERVE the device, or some of its parameters and that could be done behind SCST, which could lead to various problems, including data corruption. Thus, RESERVE/RELEASE commands, locally generated UNIT ATTENTIONs, etc. should be intercepted and processed as if local SCSI initiators act as remote SCSI initiators connected to SCST.

Interface between SCST and target drivers is based on work, done by University of New Hampshire Interoperability Labs (UNH IOL) for the UNH-iSCSI project, which is currently developed on SourceForge.net.

SCST supports the following I/O modes:

The latest stable version is 0.9.5. Requires Linux kernel 2.6.14 or higher. Tested mostly on i386 and x86_64, but should also work on any other supported by Linux platform. More detail information you could find in the project's README file.

Starting from version 0.9.4 2.4 Linux kernels are not supported anymore. The latest stable version of SCST for 2.4 kernels is 0.9.3.1-24.

If you have any questions you can ask them on the SCST SF.net page either using forum, or scst-devel mailing list.

Download
SCST SF.net project page
Change Log
Documentation: HTML, PDF, scst_user interface description
Some nice SCST call graphs, created by Ming Zhang: init_scst, scst_cmd_thread, scst_mgmt_cmd_thread, scst_mgmt_thread

The latest development version of SCST and target drivers is available directly from the project's SVN. The SCST release policy is to make stable releases twice a year, with the only exception if the current stable version contains a critical bug. Therefore on practice the development version in the SVN is usually more stable, than the "stable" one. You can access it using either web-based SVN repository viewer or using anonymous access:

svn co https://scst.svn.sourceforge.net/svnroot/scst

More information about accessing SVN repository may be found here.

History of the pre-SVN SCST development is available in SCST CVS repository, which is accessible using web-based CVS repository viewer or anonymous CVS access.


SCST administration utility

SCST administration utility "scstadmin" is developed by Mark Buechler. With it you can manually or automatically using either plain text config file, or MySQL database configure every aspect of SCST, for instance as part of the system startup/shutdown, including enabling/disabling target mode on your target SCSI controller.

Download


Target driver for QLogic 2200/2300 cards

This is ported and improved version of the "old" target driver for 2.4 kernels (see below) to the in-tree 2.6 QLogic 2x00 initiator driver. The port was done by Nathaniel Clark. This is stable and functional driver with the larger feature set, than the parent driver has.

The latest version is 0.9.5. Requires Linux kernel version 2.6.16.x or higher and SCST version 0.9.5 or higher. Tested mostly on i386 and x86_64, but should work on any other supported by Linux platform.

You can find the latest development version of this driver in the SCST SVN. See above how to setup access to it.

Download
Change Log


Target driver for LSI/MPT cards

Target driver LSI/MPT cards was originally developed by Hu Gang, then Erik Habbinga has continued the development. This driver is on the alpha stage and available from the SCST SVN repository. See above how to setup access to it.


SCSI RDMA Protocol (SRP) Target driver

SCSI RDMA Protocol (SRP) Target driver is developed independently from SCST team. You can find instructions how to download and install it on this page: http://lists.openfabrics.org/pipermail/iwg/2007-March/000378.html


Target driver for QLogic ISP chipsets

This is target driver for ISP QLogic chipsets commonly used in many SCSI and FC host bus adapters. Supported chipsets are listed in README file, incomplete list of supported HBA's is in doc/Hardware.txt. It is based on Matthew Jacob's multiplatform driver for ISP chipsets, which can be downloaded from ftp://ftp.feral.com/pub/isp/isp_dist.tgz. The update for SCST was made and supported by Stanislaw Gruszka.

One major difference of this driver from the above target driver for QLogic 2200/2300 cards is that it supports 24xx series of chipsets.

This driver is unstable and on the alpha stage. It is available from the SCST SVN repository. See above how to setup access to it.


Old target driver for QLogic 2200/2300 cards for 2.4 kernels

Old target driver for QLogic 2200/2300 cards is capable to work on 2.4 kernels. It has all required features and looks to be quite stable. It is designed to work in conjunction with the initiator driver, which is intended to perform all the initialization and shutdown tasks. In the current release as a base for the initiator driver was taken Red Hat's driver from the stock 2.4.20 kernel. Then it was patched to enable the target mode and provide all necessary callbacks, and it's still able to work as initiator only. Mode, when a host acts as the initiator and the target simultaneously, is also supported. This driver is obsoleted in favor of 2.6-based driver (see above).

The latest version is 0.9.3.4. Requires Linux kernel versions 2.4.20 or higher and SCST version 0.9.3-pre4 or higher. If you are lucky, it works also on 2.6 kernels, see README file for details. Tested on i386 only, but should work on any other supported by Linux platform.

Currently it is not supported and listed here for historical reasons only.

Download
Change Log

Target drivers for Adaptec 7xxx and QLogic QLA12xx cards

Target drivers for Adaptec 7xxx and QLogic QLA12xx cards have been developed by Hu Gang and they available for download from http://bj.soulinfo.com/~hugang/scst/tgt/. These drivers are not completed, but looks to be a good starting point if you are going to use one of these cards. SCST team don't have the appropriate hardware, therefore have not tested and don't support these drivers. Send all questions to Hu Gang <hugang % soulinfo.com>. If some of these drivers don't compile for you, try again with SCST version 0.9.3-pre2.

Download


Patches for UNH-iSCSI Target 1.5.03 and 1.6.00 to work over SCST

SCST is much more advanced, than the internal mid-level of UNH-iSCSI target driver. With SCST the iSCSI target benefits from all its features and gets ability to use all its advantages, like high performance and scalability, SMP support, required SCSI functionality emulation, etc.

Since the interface between SCST and the target drivers is based on work, done by UNH IOL, it was relatively simple to update UNH-iSCSI target to work over SCST. Mostly it was "search and replace" job. The built-in scsi_target remains available as a compile-time option.

Requires Linux kernel versions 2.4.20 or higher or 2.6.7 or higher and SCST version 0.9.2 or higher.

Currently it is not supported and listed here for historical reasons only.

Download