Files
scst/www/scst_page.html
Vladislav Bolkhovitin 48effdd529 - Implemented temporary workaround to work on 2.6.22+ kernels
- qla2x00-target/ChangeLog updated
 - Typo in scst_page.html fixed


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@156 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2007-08-07 17:12:21 +00:00

335 lines
15 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
<meta name="Keywords"
content="SCST, Linux, SCSI target, Qlogic, QLA2200, QLA2300, iSCSI, SCSI">
</head>
<body>
<a href="http://sourceforge.net"> <img
src="http://sourceforge.net/sflogo.php?group_id=110471&amp;type=5"
alt="SourceForge.net Logo" border="0" height="62" width="210"></a>
<h1><small>Generic SCSI Target Middle Level for Linux</small><br>
</h1>
<p style="text-align: justify;">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.<br>
</p>
<p style="text-align: justify;">SCST has the following features:</p>
<div style="text-align: justify;">
</div>
<p style="text-align: justify;">
</p>
<div style="text-align: justify;">
</div>
<ul style="text-align: justify;">
<li>Simple, easy to use interface with target drivers. Particularly,
SCST performs all required pre- and post- processing of incoming
requests and all necessary error recovery.</li>
<li>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
2200/2300 cards, which has all necessary features, is only ~2000 lines
of code long.</li>
<li> 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's tasklets, therefore no extra context
switches
required.</li>
<li>Provides advanced per-initiator device visibility management (LUN
masking),
which allows different initiators see different set of devices
with different access permissions. For instance, initiator A could see
exported from
target T devices Da and Db read-writable, and initiator B from the same
target T could see devices Db read-only and Dc read-writable.<br>
</li>
<li> Emulates necessary functionality of SCSI host adapter, because
from remote initiators point of view SCST acts as a SCSI host with
its
own devices. This is especially important in pass-through mode with one
to many relationship, i.e. when
multiple initiators can connect to the exported pass-through devices.
You can find more deep elaboration why it is needed in&nbsp;<a
href="http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg06911.html">this</a>
message in linux-scsi mailing list. Some of the emulated functions are
the following:
<ul>
<li> Generation of necessary UNIT ATTENTIONs, their storage and
delivery to all connected remote initiators. </li>
<li> RESERVE/RELEASE functionality. </li>
<li> CA/ACA conditions (not implemented yet). </li>
<li> All types of RESETs and other task management functions. </li>
<li> REPORT LUNS command as well as SCSI address space management
in order to have consistent address space on all remote initiators,
since local SCSI devices could not know about each other to report
via REPORT LUNS command. Additionally, SCST responds with error on
all commands to non-existing devices and provides access control, so
different remote initiators could see
different set of devices. </li>
<li> Other necessary functionality (task attributes, etc.) as
specified in SAM-2, SPC-2, SAM-3, SPC-3 and other SCSI standards. </li>
</ul>
</li>
<li> Device handlers (i.e. plugins) architecture provides extra
flexibility by allowing to make any additional
requests processing, which is completely independent from target
drivers and SCST core, like, for instance, device dependent exceptional
conditions treatment, data caching or passing commands in the user
space for device emulation. Example of such plugin is FILEIO device
handler (see below) .<br>
</li>
<li> Complete SMP support.<br>
</li>
<li>Well documented.<br>
</li>
</ul>
<div style="text-align: justify;">
</div>
<p style="text-align: justify;">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.<br>
</p>
<p style="text-align: justify;">Interface between SCST and target
drivers is based on work, done by <a href="http://www.iol.unh.edu/">University
of New Hampshire Interoperability Labs (UNH IOL)</a> for the <a
href="http://www.iol.unh.edu/consortiums/iscsi/index.html">UNH-iSCSI
project</a>, which is currently developed on <a
href="http://unh-iscsi.sourceforge.net/">SourceForge.net</a>.<br>
</p>
<p style="text-align: justify;">SCST supports the following I/O modes:<br>
</p>
<ul>
<li>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)</li>
<li>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<br>
</li>
<li>BLOCKIO mode, which performs direct block IO 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.</li>
<li>User space mode using scst_user device handler, which allows to
implement in the user space virtual SCSI devices in the SCST environment<br>
</li>
<li>"Performance" device handlers, which provide in pseudo
pass-through mode a way for direct
performance measurements without overhead of actual data transferring
from/to underlying SCSI device<br>
</li>
</ul>
<p style="text-align: justify;">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.
</p>
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.
<p style="text-align: justify;">If you have any questions you can ask
them on the SCST SF.net page either using forum, or scst-devel mailing
list.<br>
</p>
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
<a href="http://www.sourceforge.net/projects/scst">SCST SF.net project
page</a><br>
<a href="ChangeLog.scst">Change Log</a><br>
Documentation: <a href="doc/scst_pg.html">HTML</a>, <a
href="doc/scst_pg.pdf">PDF</a>, <a href="doc/scst_user_spec.txt">scst_user
interface description</a><br>
Some nice SCST call graphs, created by Ming Zhang: <a
href="doc/init_scst.png">init_scst</a>, <a
href="doc/scst_cmd_thread.png">scst_cmd_thread</a>, <a
href="doc/scst_mgmt_cmd_thread.png">scst_mgmt_cmd_thread</a>, <a
href="doc/scst_mgmt_thread.png">scst_mgmt_thread</a><br>
<p>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 <a href="http://svn.sourceforge.net/scst">web-based SVN
repository viewer</a> or using anonymous access: </p>
<p> <tt> svn co https://scst.svn.sourceforge.net/svnroot/scst<br>
</tt></p>
<p>More information about accessing SVN repository may be found <a
href="http://sourceforge.net/docs/E09">here</a>.<br>
</p>
<p>History of the pre-SVN SCST development is available in SCST CVS
repository, which is accessible using <a
href="http://cvs.sourceforge.net/viewcvs.py/scst">web-based CVS
repository viewer</a> or anonymous CVS access.<br>
</p>
<hr
style="width: 100%; height: 2px; margin-left: 0px; margin-right: 0px;">
<h1><small>SCST administration utility<br>
</small></h1>
<p>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.<br>
</p>
<p><a
href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a>
</p>
<hr
style="width: 100%; height: 2px; margin-left: 0px; margin-right: 0px;">
<h1><small>Target driver for QLogic 2200/2300 cards<br>
</small></h1>
<div style="text-align: justify;">
<p>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.</p>
<p style="text-align: justify;">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.
</p>
<p style="text-align: justify;">You can find the latest development
version of this driver in the SCST SVN. See above how to setup access
to it.<br>
</p>
<p style="text-align: justify;"><a
href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
<a href="ChangeLog.qla26">Change Log</a><br>
</p>
</div>
<hr style="width: 100%; height: 2px;">
<h1><small>Target driver for LSI/MPT cards</small></h1>
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 <a
href="http://svn.sourceforge.net/scst">SCST SVN repository</a>. See
above how to setup access to it.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small>SCSI RDMA Protocol (SRP) Target driver</small></h1>
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: <a
href="http://lists.openfabrics.org/pipermail/iwg/2007-March/000378.html">http://lists.openfabrics.org/pipermail/iwg/2007-March/000378.html</a><br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small>Target driver for QLogic ISP chipsets<br>
</small></h1>
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 <a
href="ftp://ftp.feral.com/pub/isp/isp_dist.tgz">ftp://ftp.feral.com/pub/isp/isp_dist.tgz</a>.
The update for SCST was made and supported by Stanislaw Gruszka.<br>
<br>
One major difference of this driver from the above target driver for
QLogic 2200/2300 cards is that it supports 24xx series of chipsets.<br>
<br>
This driver is unstable and on the
alpha stage. It is available from the <a
href="http://svn.sourceforge.net/scst">SCST SVN repository</a>. See
above how to setup access to it.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small>Old target driver for QLogic 2200/2300 cards for 2.4 kernels<br>
</small></h1>
<div style="text-align: justify;">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).<br>
<br>
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.<br>
<br>
Currently it is not supported and listed here for historical reasons
only.<br>
<br>
</div>
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
<a href="ChangeLog.qla">Change Log</a>
<hr style="width: 100%; height: 2px;"><span style="font-weight: bold;"></span>
<h1><small>Target drivers for Adaptec 7xxx and QLogic QLA12xx
cards</small></h1>
Target drivers for Adaptec 7xxx and QLogic QLA12xx cards have
been developed by Hu Gang and they available for download from <a
href="http://bj.soulinfo.com/%7Ehugang/scst/tgt/">http://bj.soulinfo.com/~hugang/scst/tgt/</a>.
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
&lt;hugang
% soulinfo.com&gt;. If some of these drivers don't compile for you, try
again with SCST version 0.9.3-pre2.<br>
<br>
<a href="http://bj.soulinfo.com/%7Ehugang/scst/tgt/">Download</a><br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small>Patches for UNH-iSCSI Target 1.5.03 and 1.6.00 to work over
SCST</small></h1>
SCST is much more advanced, than the internal mid-level of <a
href="http://sourceforge.net/projects/unh-iscsi">UNH-iSCSI target
driver</a>.
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.<br>
<br>
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.<br>
<br>
Requires Linux kernel versions 2.4.20 or
higher or 2.6.7 or higher and SCST version 0.9.2 or higher.<br>
<br>
Currently it is not supported and listed here for historical reasons
only.<br>
<br>
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
<br>
</body>
</html>