[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 new 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,
51 which allows different initiators could see different set of devices
52 with different access permissions. For instance, initiator A could see
53 exported from
54 target T devices Da and Db read-writable, and initiator B from the same
55 target T could see devices Db read-only and Dc read-writable.<br>
56   </li>
57   <li> Complete SMP support.<br>
58   </li>
59   <li> Emulates necessary functionality of SCSI host adapter, because
60 from a remote initiator's point of view SCST acts as a SCSI host with
61 its
62 own devices. Some of the emulated functions are the following:
63     <ul>
64       <li> Generation of necessary UNIT ATTENTIONs, their storage and
65 delivery to all connected remote initiators (sessions). </li>
66       <li> RESERVE/RELEASE functionality. </li>
67       <li> CA/ACA conditions. </li>
68       <li> All types of RESETs and other task management functions. </li>
69       <li> REPORT LUNS command as well as SCSI address space management
70 in order to have consistent address space on all remote initiators,
71 since local SCSI devices could not know about each other to report
72 via REPORT LUNS command. Additionally, SCST responds with error on
73 all commands to non-existing devices and provides access control
74 (not implemented yet), so different remote initiators could see
75 different set of devices. </li>
76       <li> Other necessary functionality (task attributes, etc.) as
77 specified in SAM-2, SPC-2, SAM-3, SPC-3 and other SCSI standards. </li>
78     </ul>
79   </li>
80   <li> Device handlers (i.e. plugins) architecture provides extra
81 flexibility by allowing to make any additional
82 requests processing, which is completely independent from target
83 drivers and SCST core, like, for instance, device dependent exceptional
84 conditions treatment, data caching or passing commands in the user
85 space for device emulation. Example of such plugin is FILEIO device
86 handler (see below) .<br>
87   </li>
88   <li>Well documented.<br>
89   </li>
90 </ul>
91 <div style="text-align: justify;">
92 </div>
93 <p style="text-align: justify;">Interoperability between SCST and local
94 SCSI initiators (like sd, st) is
95 the additional issue that SCST is going to address (it is not
96 implemented yet). It is necessary, because local SCSI initiators can
97 change the state of the device, for example RESERVE the device, or some
98 of its parameters and that would be done behind SCST, which could lead
99 to various problems. Thus, RESERVE/RELEASE commands, locally generated
100 UNIT ATTENTIONs, etc. should be intercepted and processed as if local
101 SCSI initiators act as remote SCSI initiators connected to SCST. This
102 feature requires some the kernel modification. Since in the current
103 version it is not implemented, SCST and target drivers are
104 able to work with any 2.4 or 2.6 kernel version.<br>
105 </p>
106 <p style="text-align: justify;">Interface between SCST and target
107 drivers is based on work, done by <a href="http://www.iol.unh.edu/">University
108 of New Hampshire Interoperability Labs (UNH IOL)</a> for the <a
109  href="http://www.iol.unh.edu/consortiums/iscsi/index.html">UNH-iSCSI
110 project</a>, which is currently developed on <a
111  href="http://unh-iscsi.sourceforge.net/">SourceForge.net</a>.<br>
112 </p>
113 <p style="text-align: justify;">The latest stable version is 0.9.5. It
114 supports SCSI disks (type 0), tapes (type 1), processors (type
115 3), CDROMs (type 5), MO disks (type 7), medium changers (type 8) and
116 RAID controllers (type 0xC). Also it supports FILEIO and "performance"
117 device handlers. FILEIO device handler allows to use files on file
118 systems or block devices as virtual remotely available SCSI disks or
119 CDROM's. "Performance" device handlers provide a way for direct
120 performance measurements without overhead of actual data transferring
121 from/to underlying SCSI device. Requires Linux kernel 2.6.14 or higher.
122 Tested on i386 and x86_64 only,
123 but should also
124 work on any other
125 supported by Linux platform. More detail information you could find in
126 the project README file.<br>
127 </p>
128 <p style="text-align: justify;">Starting from version 0.9.4 2.4 Linux
129 kernels are not supported anymore, although there could be new SCST
130 releases those kernels with very important bug fixes. The latest stable
131 version of SCST with 2.4 kernels support is</p>
132 <p style="text-align: justify;">If you have any questions you can ask
133 them on the SCST SF.net page either using forum, or scst-devel mailing
134 list.<br>
135 </p>
136 <a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
137 <a href="http://www.sourceforge.net/projects/scst">SCST SF.net project
138 page</a><br>
139 <a href="ChangeLog.scst">Change Log</a><br>
140 Documentation: <a href="doc/scst_pg.html">HTML</a>, <a
141  href="doc/scst_pg.pdf">PDF</a><br>
142 <p>The latest development versions of SCST and its drivers are
143 available directly from the
144 project's SVN. You can access it using either <a
145  href="http://svn.sourceforge.net/scst">web-based SVN
146 repository viewer</a> or using anonymous access: </p>
147 <p> <tt> svn co https://svn.sourceforge.net/svnroot/scst<br>
148 </tt></p>
149 <p>More information about accessing SVN repository may be found <a
150  href="http://sourceforge.net/docs/E09">here</a>.<br>
151 </p>
152 <p>History of the pre-SVN SCST development is available in SCST CVS
153 repository, which is accessible using <a
154  href="http://cvs.sourceforge.net/viewcvs.py/scst">web-based CVS
155 repository viewer</a> or anonymous CVS access.<br>
156 </p>
157 <hr
158  style="width: 100%; height: 2px; margin-left: 0px; margin-right: 0px;">
159 <h1><small>Target driver for Qlogic 2200/2300 cards for 2.6 kernels<br>
160 </small></h1>
161 <div style="text-align: justify;">
162 <p>This is ported version of the
163 previous target driver for 2.4 kernels (see below) to the in-tree 2.6
164 Qlogic 2x00 initiator
165 driver. The port was done by Nathaniel Clark. This is stable and
166 functional driver with
167 the larger feature set, than the parent driver has.</p>
168 <p style="text-align: justify;">The latest version is 0.9.5. Requires
169 Linux kernel version 2.6.16.X and SCST version 0.9.5 or higher.
170 For usage with other kernel versions you need to port the
171 initiator patch to that version of the kernel. Tested on i386 and
172 x86_64 only, but
173 should work on any other supported by Linux platform.
174 </p>
175 <p style="text-align: justify;">You can find the latest development
176 version of this driver in the SCST SVN. See above how to setup access
177 to it.<br>
178 </p>
179 <p style="text-align: justify;"><a
180  href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
181 <a href="ChangeLog.qla26">Change Log</a><br>
182 </p>
183 </div>
184 <hr style="width: 100%; height: 2px;">
185 <h1><small>Target driver for Qlogic 2200/2300 cards<br>
186 </small></h1>
187 <div style="text-align: justify;">Target driver for Qlogic 2200/2300
188 cards has all required features and
189 looks to be quite stable. It is designed to work in conjunction with
190 the initiator
191 driver, which is intended to perform all the initialization and
192 shutdown tasks. In the current release as a base for the initiator
193 driver was taken Red Hat's driver from the stock 2.4.20 kernel. Then it
194 was patched, basically, to enable the target mode and provide all
195 necessary callbacks, and it's still able to work as initiator only.
196 Mode, when a host acts as the initiator and the target simultaneously,
197 is also supported. This driver is obsoleted in favor of
198 2.6-based driver (see above).<br>
199 <br>
200 The latest version is Requires Linux kernel versions 2.4.20 or
201 higher and SCST version 0.9.3-pre4 or higher. If you are lucky, it
202 works also on 2.6 kernels, see README file
203 for details. Tested on i386 only, but
204 should work on any other supported by Linux platform.<br>
205 <br>
206 </div>
207 <a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
208 <a href="ChangeLog.qla">Change Log</a>
209 <p style="text-align: justify;"></p>
210 <hr style="width: 100%; height: 2px;">
211 <span style="font-weight: bold;"></span>
212 <h1><small>Target drivers for Adaptec 7xxx, LSI/MPT and Qlogic QLA12xx
213 cards</small></h1>
214 Target drivers for Adaptec 7xxx, LSI/MPT and Qlogic QLA12xx cards have
215 being developed by Hu Gang and they available for download from <a
216  href="http://bj.soulinfo.com/%7Ehugang/scst/tgt/">http://bj.soulinfo.com/~hugang/scst/tgt/</a>.
217 These drivers are not completed, but looks to be a good starting point
218 if you are going to use one of these cards.
219 SCST team don't have the appropriate hardware, therefore have not
220 tested and don't support these drivers. Send all questions to Hu Gang
221 &lt;hugang
222 % soulinfo.com&gt;. If some of these drivers don't compile for you, try
223 again with SCST version 0.9.3-pre2.<br>
224 <br>
225 <a href="http://bj.soulinfo.com/%7Ehugang/scst/tgt/">Download</a><br>
226 <br>
227 <hr style="width: 100%; height: 2px;">
228 <h1><small>Patches for UNH-iSCSI Target 1.5.03 and 1.6.00 to work over
229 SCST</small></h1>
230 SCST is much more advanced, than the internal mid-level of <a
231  href="http://sourceforge.net/projects/unh-iscsi">UNH-iSCSI target
232 driver</a>.
233 With SCST the iSCSI target benefits from all its features and gets
234 ability to use all its advantages, like high performance and
235 scalability, SMP support, required SCSI functionality emulation, etc.<br>
236 <br>
237 Since the interface between SCST and the target drivers is based on
238 work, done by UNH IOL, it was relatively simple to update UNH-iSCSI
239 target to work over SCST. Mostly it was "search and replace" job. The
240 built-in scsi_target remains available as a compile-time option.<br>
241 <br>
242 Requires Linux kernel versions 2.4.20 or
243 higher or 2.6.7 or higher and SCST version 0.9.2 or higher.<br>
244 <br>
245 <a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
246 <br>
247 </body>
248 </html>