[mirror/scst/.git] / www / scst_page.html
2 <html>
3 <head>
4   <meta http-equiv="content-type"
5  content="text/html; charset=ISO-8859-1">
6   <title>SCST: Generic SCSI Target Middle Level for Linux</title>
7   <meta name="Keywords"
8  content="SCST, Linux, SCSI target, Qlogic, QLA2200, QLA2300, iSCSI, SCSI">
9 </head>
10 <body>
11 <a href="http://sourceforge.net"> <img
12  src="http://sourceforge.net/sflogo.php?group_id=110471&amp;type=5"
13  alt="SourceForge.net Logo" border="0" height="62" width="210"></a>
14 <h1><small>Generic SCSI Target Middle Level for Linux</small><br>
15 </h1>
16 <p style="text-align: justify;">The SCSI target mid-level subsystem for
17 Linux (SCST) is a subsystem of the Linux kernel that provides a
18 standard framework for SCSI target drivers development. It is designed
19 to
20 provide unified, consistent interface between SCSI target drivers and
21 Linux kernel and simplify target drivers development as much as
22 possible. A system with a SCSI target device is able to share its local
23 or virtual devices with other systems on a network with SCSI protocol
24 support, e.g. SCSI bus, Fibre Channel, TCP/IP with iSCSI. This is
25 commonly used for data storage virtualization.<br>
26 </p>
27 <p style="text-align: justify;">SCST has the following features:</p>
28 <div style="text-align: justify;">
29 </div>
30 <p style="text-align: justify;">
31 </p>
32 <div style="text-align: justify;">
33 </div>
34 <ul style="text-align: justify;">
35   <li>Simple, easy to use interface with target drivers. Particularly,
36 SCST performs all required pre- and post- processing of incoming
37 requests and all necessary error recovery.</li>
38   <li>Undertakes most problems, related to execution contexts, thus
39 practically eliminating one of the most complicated problem in the
40 kernel drivers development. For example, a target driver for Qlogic
41 2200/2300 cards, which has all necessary features, is only ~2000 lines
42 of code long.</li>
43   <li> Very low overhead, fine-grained locks and simplest commands
44 processing path, which allow to reach maximum possible performance and
45 scalability. Particularly, incoming
46 requests can be processed in the caller's context or in
47 one of the internal SCST's tasklets, therefore no extra context
48 switches
49 required.</li>
50   <li>Provides advanced per-initiator device visibility management (LUN
51 masking),
52 which allows different initiators see different set of devices
53 with different access permissions. For instance, initiator A could see
54 exported from
55 target T devices Da and Db read-writable, and initiator B from the same
56 target T could see devices Db read-only and Dc read-writable.<br>
57   </li>
58   <li> Complete SMP support.<br>
59   </li>
60   <li> Emulates necessary functionality of SCSI host adapter, because
61 from a remote initiator's point of view SCST acts as a SCSI host with
62 its
63 own devices. Some of the emulated functions are the following:
64     <ul>
65       <li> Generation of necessary UNIT ATTENTIONs, their storage and
66 delivery to all connected remote initiators (sessions). </li>
67       <li> RESERVE/RELEASE functionality. </li>
68       <li> CA/ACA conditions (not implemented yet). </li>
69       <li> All types of RESETs and other task management functions. </li>
70       <li> REPORT LUNS command as well as SCSI address space management
71 in order to have consistent address space on all remote initiators,
72 since local SCSI devices could not know about each other to report
73 via REPORT LUNS command. Additionally, SCST responds with error on
74 all commands to non-existing devices and provides access control, so
75 different remote initiators could see
76 different set of devices. </li>
77       <li> Other necessary functionality (task attributes, etc.) as
78 specified in SAM-2, SPC-2, SAM-3, SPC-3 and other SCSI standards. </li>
79     </ul>
80   </li>
81   <li> Device handlers (i.e. plugins) architecture provides extra
82 flexibility by allowing to make any additional
83 requests processing, which is completely independent from target
84 drivers and SCST core, like, for instance, device dependent exceptional
85 conditions treatment, data caching or passing commands in the user
86 space for device emulation. Example of such plugin is FILEIO device
87 handler (see below) .<br>
88   </li>
89   <li>Well documented.<br>
90   </li>
91 </ul>
92 <div style="text-align: justify;">
93 </div>
94 <p style="text-align: justify;">Interoperability between SCST and local
95 SCSI initiators (like sd, st) is
96 the additional issue that SCST is going to address (it is not
97 implemented yet). It is necessary, because local SCSI initiators can
98 change the state of the device, for example RESERVE the device, or some
99 of its parameters and that would be done behind SCST, which could lead
100 to various problems. Thus, RESERVE/RELEASE commands, locally generated
101 UNIT ATTENTIONs, etc. should be intercepted and processed as if local
102 SCSI initiators act as remote SCSI initiators connected to SCST. This
103 feature requires some the kernel modification. Since in the current
104 version it is not implemented, SCST and target drivers are
105 able to work with any version of Linux 2.6 kernel.<br>
106 </p>
107 <p style="text-align: justify;">Interface between SCST and target
108 drivers is based on work, done by <a href="http://www.iol.unh.edu/">University
109 of New Hampshire Interoperability Labs (UNH IOL)</a> for the <a
110  href="http://www.iol.unh.edu/consortiums/iscsi/index.html">UNH-iSCSI
111 project</a>, which is currently developed on <a
112  href="http://unh-iscsi.sourceforge.net/">SourceForge.net</a>.<br>
113 </p>
114 <p style="text-align: justify;">The latest stable version is 0.9.5. It
115 supports SCSI disks (type 0), tapes (type 1), processors (type
116 3), CDROMs (type 5), MO disks (type 7), medium changers (type 8) and
117 RAID controllers (type 0xC). Also it supports FILEIO and "performance"
118 device handlers. FILEIO device handler allows to use files on file
119 systems or block devices as virtual remotely available SCSI disks or
120 CDROMs. "Performance" device handlers provide a way for direct
121 performance measurements without overhead of actual data transferring
122 from/to underlying SCSI device. Requires Linux kernel 2.6.14 or higher.
123 Tested mostly on i386 and x86_64,
124 but should also
125 work on any other
126 supported by Linux platform. More detail information you could find in
127 the project's README file.<br>
128 </p>
129 <p style="text-align: justify;">Starting from version 0.9.4 2.4 Linux
130 kernels are not supported anymore, although there could be new SCST
131 releases for those kernels with very important bug fixes. The latest
132 stable
133 version of SCST with 2.4 kernels support is</p>
134 <p style="text-align: justify;">If you have any questions you can ask
135 them on the SCST SF.net page either using forum, or scst-devel mailing
136 list.<br>
137 </p>
138 <a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
139 <a href="http://www.sourceforge.net/projects/scst">SCST SF.net project
140 page</a><br>
141 <a href="ChangeLog.scst">Change Log</a><br>
142 Documentation: <a href="doc/scst_pg.html">HTML</a>, <a
143  href="doc/scst_pg.pdf">PDF</a><br>
144 <p>The latest development versions of SCST and its drivers are
145 available directly from the
146 project's SVN. You can access it using either <a
147  href="http://svn.sourceforge.net/scst">web-based SVN
148 repository viewer</a> or using anonymous access: </p>
149 <p> <tt> svn co https://svn.sourceforge.net/svnroot/scst<br>
150 </tt></p>
151 <p>More information about accessing SVN repository may be found <a
152  href="http://sourceforge.net/docs/E09">here</a>.<br>
153 </p>
154 <p>History of the pre-SVN SCST development is available in SCST CVS
155 repository, which is accessible using <a
156  href="http://cvs.sourceforge.net/viewcvs.py/scst">web-based CVS
157 repository viewer</a> or anonymous CVS access.<br>
158 </p>
159 <hr
160  style="width: 100%; height: 2px; margin-left: 0px; margin-right: 0px;">
161 <h1><small>SCST administration utility<br>
162 </small></h1>
163 <p>SCST administration utility "scstadmin" is developed by Mark
164 Buechler. With it you can manually or automatically using either plain
165 text config file, or MySQL database configure every aspect of SCST, for
166 instance as part of the system startup/shutdown, including
167 enabling/disabling target mode on your target SCSI controller.<br>
168 </p>
169 <p><a
170  href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a>
171 </p>
172 <hr
173  style="width: 100%; height: 2px; margin-left: 0px; margin-right: 0px;">
174 <h1><small>Target driver for Qlogic 2200/2300 cards for 2.6 kernels<br>
175 </small></h1>
176 <div style="text-align: justify;">
177 <p>This is ported and improved version of the "old" target driver for
178 2.4 kernels (see below) to the in-tree 2.6
179 Qlogic 2x00 initiator
180 driver. The port was done by Nathaniel Clark. This is stable and
181 functional driver with
182 the larger feature set, than the parent driver has.</p>
183 <p style="text-align: justify;">The latest version is 0.9.5. Requires
184 Linux kernel version 2.6.16.x or higher and SCST version 0.9.5 or
185 higher.
186 Tested mostly on i386 and
187 x86_64, but
188 should work on any other supported by Linux platform.
189 </p>
190 <p style="text-align: justify;">You can find the latest development
191 version of this driver in the SCST SVN. See above how to setup access
192 to it.<br>
193 </p>
194 <p style="text-align: justify;"><a
195  href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
196 <a href="ChangeLog.qla26">Change Log</a><br>
197 </p>
198 </div>
199 <hr style="width: 100%; height: 2px;">
200 <h1><small>Target driver for LSI/MPT cards</small></h1>
201 Target driver LSI/MPT cards was originally developed by Hu Gang, then
202 Erik Habbinga has continued the development. This driver is on the
203 alpha stage and available from the <a
204  href="http://svn.sourceforge.net/scst">SCST SVN repository</a>. See
205 above how to setup access to it.<br>
206 <br>
207 <hr style="width: 100%; height: 2px;">
208 <h1><small>Old target driver for Qlogic 2200/2300 cards<br>
209 </small></h1>
210 <div style="text-align: justify;">Old target driver for Qlogic
211 2200/2300
212 cards is capable to work on 2.4 kernels. It has all required features
213 and
214 looks to be quite stable. It is designed to work in conjunction with
215 the initiator
216 driver, which is intended to perform all the initialization and
217 shutdown tasks. In the current release as a base for the initiator
218 driver was taken Red Hat's driver from the stock 2.4.20 kernel. Then it
219 was patched to enable the target mode and provide all
220 necessary callbacks, and it's still able to work as initiator only.
221 Mode, when a host acts as the initiator and the target simultaneously,
222 is also supported. This driver is obsoleted in favor of
223 2.6-based driver (see above).<br>
224 <br>
225 The latest version is Requires Linux kernel versions 2.4.20 or
226 higher and SCST version 0.9.3-pre4 or higher. If you are lucky, it
227 works also on 2.6 kernels, see README file
228 for details. Tested on i386 only, but
229 should work on any other supported by Linux platform.<br>
230 <br>
231 </div>
232 <a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
233 <a href="ChangeLog.qla">Change Log</a>
234 <hr style="width: 100%; height: 2px;"><span style="font-weight: bold;"></span>
235 <h1><small>Target drivers for Adaptec 7xxx and Qlogic QLA12xx
236 cards</small></h1>
237 Target drivers for Adaptec 7xxx and Qlogic QLA12xx cards have
238 been developed by Hu Gang and they available for download from <a
239  href="http://bj.soulinfo.com/%7Ehugang/scst/tgt/">http://bj.soulinfo.com/~hugang/scst/tgt/</a>.
240 These drivers are not completed, but looks to be a good starting point
241 if you are going to use one of these cards.
242 SCST team don't have the appropriate hardware, therefore have not
243 tested and don't support these drivers. Send all questions to Hu Gang
244 &lt;hugang
245 % soulinfo.com&gt;. If some of these drivers don't compile for you, try
246 again with SCST version 0.9.3-pre2.<br>
247 <br>
248 <a href="http://bj.soulinfo.com/%7Ehugang/scst/tgt/">Download</a><br>
249 <br>
250 <hr style="width: 100%; height: 2px;">
251 <h1><small>Patches for UNH-iSCSI Target 1.5.03 and 1.6.00 to work over
252 SCST</small></h1>
253 SCST is much more advanced, than the internal mid-level of <a
254  href="http://sourceforge.net/projects/unh-iscsi">UNH-iSCSI target
255 driver</a>.
256 With SCST the iSCSI target benefits from all its features and gets
257 ability to use all its advantages, like high performance and
258 scalability, SMP support, required SCSI functionality emulation, etc.<br>
259 <br>
260 Since the interface between SCST and the target drivers is based on
261 work, done by UNH IOL, it was relatively simple to update UNH-iSCSI
262 target to work over SCST. Mostly it was "search and replace" job. The
263 built-in scsi_target remains available as a compile-time option.<br>
264 <br>
265 Requires Linux kernel versions 2.4.20 or
266 higher or 2.6.7 or higher and SCST version 0.9.2 or higher.<br>
267 <br>
268 <a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
269 <br>
270 </body>
271 </html>