[ANNOUNCE]: Generic SCSI Target Mid-level For Linux (SCST), targetdrivers for iSCSI and QLogic Fibre Channel cards released

From: Vladislav Bolkhovitin
Date: Tue Jul 08 2008 - 15:40:56 EST


I'm glad to announce that version 1.0.0 of Generic SCSI Target Middle Level for Linux (SCST) was released and available for download from http://scst.sourceforge.net/downloads.html

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. It has the following main features:

* Simple, easy to use interface with target drivers. Particularly, SCST core performs required pre- and post- processing of incoming requests as well as necessary error recovery.

* Undertakes most problems, related to execution contexts, thus practically eliminating one of the most complicated problem in the kernel drivers development. For example, a target driver for QLogic 22xx/23xx cards, which has all necessary features, is only about 2000 lines of code long.

* Very low overhead, fine-grained locks and simplest commands processing path, which allow to reach maximum possible performance and scalability. Particularly, incoming requests can be processed in the caller's context or in one of the internal SCST core's tasklets, therefore no extra context switches required.

* Device handlers, i.e. plugins, architecture provides extra flexibility by allowing various I/O modes in backstorage handling. For example, pass-through device handlers allow to use real SCSI hardware and vdisk device handler allows to use files as virtual disks.

* Provides advanced per-initiator devices visibility management (LUN masking), which allows different initiators to see different set of devices with different access permissions. For instance, initiator A could see exported from target T devices X and Y read-writable, and initiator B from the same target T could see devices Y read-only and Z read-writable.

* Emulates necessary functionality of SCSI host adapter, because from remote initiators point of view SCST acts as a SCSI host with its own devices.

The following I/O modes are supported by SCST:

* Pass-through mode with one to many relationship, i.e. when multiple initiators can connect to the exported pass-through devices, for virtually all SCSI devices types: 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)

* FILEIO mode, which allows to use files on file systems or block devices as virtual remotely available SCSI disks or CDROMs with benefits of the Linux page cache

* BLOCKIO mode, which performs direct block I/O with a block device, bypassing page-cache for all operations. This mode works ideally with high-end storage HBAs and for applications that either do not need caching between application and disk or need the large block throughput.

* User space mode using scst_user device handler, which allows to implement in the user space virtual SCSI devices in the SCST environment.

Detail description of SCST, its drivers and utilities you can find on SCST home page http://scst.sourceforge.net.

Comparison with the mainstream target middle level STGT you can find on the SCST vs STGT page http://scst.sourceforge.net/scstvsstgt.html. In short, SCST has the following main advantages over STGT:

- Better performance (in many cases tens of %% and more) with potential for further improvement, for example, by implementing zero-copy cache I/O.

- Monolithic in-kernel architecture, which follows standard Linux kernel paradigm to eliminate distributed processing. It is simpler, hence more reliable and maintainable.

SCST is being prepared in form of patch for review and inclusion to the kernel.

Vlad
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/