Generic SCSI Target Middle Level for Linux

The SCSI target mid-level subsystem for Linux (SCST) is a new 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 (like sd, st) 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 would be done behind SCST, which could lead to various problems. 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. This feature requires some the kernel modification. Since in the current version it is not implemented, SCST and target drivers are able to work with any 2.4 or 2.6 kernel version.

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

The latest stable version is 0.9.4. It supports SCSI disks (type 0), tapes (type 1), processors (type 3), CDROMs (type 5), MO disks (type 7), medium changers (type 8) and RAID controllers (type 0xC). Also it supports FILEIO and "performance" device handlers. FILEIO device handler allows to use files on file systems or block devices as virtual remotely available SCSI disks or CDROM's. "Performance" device handlers provide a way for direct performance measurements without overhead of actual data transferring from/to underlying SCSI device. Requires Linux kernel 2.6.14 or higher. Tested on i386 and x86_64 only, but should also work on any other supported by Linux platform. More detail information you could find in the project README file.

Starting from version 0.9.4 2.4 Linux kernels are not supported anymore, although there could be new SCST releases those kernels with very important bug fixes. The latest stable version of SCST with 2.4 kernels support is

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

SCST project page
Change Log
Documentation: HTML, PDF

The latest development versions of SCST and its drivers are available directly from the project's SVN. You can access it using either web-based SVN repository viewer or using anonymous access:

svn co

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.

Target driver for Qlogic 2200/2300 cards for 2.6 kernels

This is ported version of the previous 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 Requires Linux kernel version 2.6.15.X and SCST version 0.9.4 or higher. For usage with other kernel versions you will need to port the initiator patch to that version of the kernel.

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

Change Log

Target driver for Qlogic 2200/2300 cards

Target driver for Qlogic 2200/2300 cards 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, basically, 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 going to be obsolete soon in favor of 2.6-based driver (see above).

The latest version is 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.

Change Log

Target drivers for Adaptec 7xxx, LSI/MPT and Qlogic QLA12xx cards

Target drivers for Adaptec 7xxx, LSI/MPT and Qlogic QLA12xx cards have being developed by Hu Gang and they available for download from 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 %>. If some of these drivers don't compile for you, try again with SCST version 0.9.3-pre2.


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.