Access control docs updated
[mirror/scst/.git] / www / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">\r
2 <html xmlns="" xml:lang="en" lang="en">\r
3 <head>\r
4 <meta name="Keywords" content="Generic SCSI Target Middle Level for Linux, SCST, SCSI Target" />\r
5 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
6 <meta name="author" content="Daniel Fernandes"/>\r
7 <meta name="Robots" content="index,follow" />\r
8 <link rel="stylesheet" href="images/Orange.css" type="text/css" />      \r
9 <title>SCST: Generic SCSI Target Middle Level for Linux</title>\r
10 </head>\r
11 \r
12 <body>\r
13 <div id="wrap"> \r
14         <div id="header">       \r
15                 <div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>\r
16                 <h2 id="slogan">SCSI Target Middle Level for Linux</h2> \r
17         </div>\r
18         <div id="menu">\r
19                 <ul>\r
20                         <li id="sponsorship"><a href="sponsorship.html">Sponsorship</a></li>
21                         <li id="current"><a href="index.html">Home</a></li>
22                         <li><a href="">Main</a></li>\r
23                         <li><a href="targets.html">Drivers</a></li>\r
24                         <li><a href="downloads.html">Downloads</a></li>\r
25                         <li><a href="contributing.html">Contributing</a></li>\r
26                         <li><a href="scstvsstgt.html">SCST vs STGT</a></li>                     \r
27                 </ul>\r
28         </div>  \r
29         <div id="content-wrap">\r
30                         <div id="main">\r
31                                 <h1>Generic SCSI Target Middle Level for Linux</h1>
32                                                 \r
33                                 <p>The <strong>SCSI target mid-level subsystem for Linux (SCST)</strong> is a subsystem of the Linux kernel 
34                                         that provides a standard framework for SCSI target drivers development.
35                                         It is designed to provide unified, consistent interface between SCSI target drivers and Linux kernel 
36                                         and simplify target drivers development as much as possible.</p>
37                                 <p>A system with a SCSI target device is able to share its local or virtual devices with other systems 
38                                         on a network with SCSI protocol support, e.g. <strong>SCSI bus, SAS, Fibre Channel or iSCSI</strong>.
39                                         This is commonly used for data storage virtualization.</p>\r
41                                 <p>This project consists from a set of subprojects: <strong>SCST core</strong> itself
42                                         as well as <strong>target drivers</strong> and <strong>user space utilities</strong>.
43                                         They are developed more or less independently and have own maintainers.</p>\r
45                                 <h1>Features of SCST Core</h1>
46                                 <ul>                                    \r
47                                         <li><span>Simple, easy to use interface with target drivers. 
48                                                                  Particularly, SCST core performs required pre- and post- processing of incoming requests as well as 
49                                                                  necessary error recovery.</span></li>\r
50                                         <li><span>Undertakes most problems, related to execution contexts, thus practically eliminating one of the most 
51                                                                  complicated problem in the kernel drivers development. For example, a target driver for QLogic 
52                                                                  22xx/23xx cards, which has all necessary features, is only about 2000 lines of code long.</span></li>
53                                         <li><span>Very low overhead, fine-grained locks and simplest commands processing path, which allow to reach 
54                                                                  maximum possible performance and scalability. Particularly, incoming requests can be processed in 
55                                                                  the caller's context or in one of the internal SCST core's tasklets, therefore no extra context switches 
56                                                                  required. </span></li>
57                                         <li><span>Device handlers, i.e. plugins, architecture provides extra flexibility by allowing various I/O 
58                                                                  modes in backstorage handling. For example, pass-through device handlers allows to use real 
59                                                                  SCSI hardware and vdisk device handler allows to use files as virtual disks.</span></li>
60                                         <li><span>Provides advanced per-initiator device visibility management (LUN masking), which allows different 
61                                                                  initiators to see different set of devices with different access permissions. For instance, 
62                                                                  initiator A could see exported from target T devices X and Y read-writable, and initiator B from 
63                                                                  the same target T could see devices Y read-only and Z read-writable.</span></li>
64                                         <li><span>Emulates necessary functionality of SCSI host adapter, because from remote initiators point of view 
65                                                                  SCST acts as a SCSI host with its own devices. This is especially important in pass-through mode with 
66                                                                  one to many relationship, i.e. when multiple initiators can connect to the exported pass-through 
67                                                                  devices. You can find more deep elaboration why it is needed in <a href=>this</a> 
68                                                                  message in thread "Question for pass-through target design" in linux-scsi mailing list. Some of the emulated functions are the following:
69                                                                  <ul>
70                                                                         <li><span>Generation of necessary UNIT ATTENTIONs, their storage and delivery to all connected 
71                                                                                                  remote initiators.</span></li>                                                          
72                                                                         <li><span>RESERVE/RELEASE functionality.</span></li>
73                                                                         <li><span>CA/ACA conditions (not implemented yet).</span></li>
74                                                                         <li><span>All types of RESETs and other task management functions.</span></li>
75                                                                         <li><span>REPORT LUNS command as well as SCSI address space management in order to have consistent 
76                                                                                                  address space on all remote initiators, since local SCSI devices could not know about each
77                                                                                                  other to report via REPORT LUNS command. Additionally, SCST core responds with error on all 
78                                                                                                  commands to non-existing devices and provides access control, so different remote 
79                                                                                                  initiators could see different set of devices.</span></li>
80                                                                         <li><span>Other necessary functionality (task attributes, etc.) as specified in SAM-2, SPC-2, SAM-3,
81                                                                                                  SPC-3 and other SCSI standards.</span></li>
82                                                                  </ul>
83                                                                  </span></li>
84                                         <li><span>Multithreaded design and complete SMP support, so, if necessary, all your processors will participate in the commands
85                                                                  processing.</span></li>
86                                         <li><span>Well documented.</span></li>                                                  \r
87                                 </ul>                                   
88                                 <p>Interoperability between SCST core and local SCSI initiators (i.e. sd, st, etc.) is the additional issue that SCST is going to 
89                                 address (it is not implemented yet). It is necessary, because local SCSI initiators can change the state of the 
90                                 device, for example RESERVE the device, or some of its parameters and that could be done behind SCST, which could 
91                                 lead to various problems, including data corruption. Thus, RESERVE/RELEASE commands, locally generated 
92                                 UNIT ATTENTIONs, etc. should be intercepted and processed as if local SCSI initiators act as remote SCSI 
93                                 initiators connected to SCST.</p>                               
94                                 <p>Interface between SCST core and target drivers is based on work, done by <a href="">University
95                                  of New Hampshire Interoperability Labs (UNH IOL)</a> for the <a href="">
96                                  UNH-iSCSI project</a>, which was developed on <a href=""></a>.</p>                             
98                                 <h1>SCST core supports the following I/O modes</h1>
99                                 <ul>
100                                         <li><span><strong>Pass-through mode</strong> with one to many relationship, i.e. when multiple initiators can 
101                                                 connect to the exported pass-through devices, for virtually all SCSI devices types: <strong>disks (type 0), 
102                                                 tapes (type 1), processors (type 3), CDROMs (type 5), MO disks (type 7), medium changers (type 8) and RAID 
103                                                 controllers (type 0xC)</strong>.</span></li>
104                                 <li><span><strong>FILEIO mode</strong>, which allows to use files on file systems or block devices as virtual 
105                                         remotely available SCSI disks or CDROMs with benefits of the <strong>Linux page cache</strong>.</span></li>
106                                 <li><span><strong>BLOCKIO mode</strong>, which performs direct block IO with a block device, bypassing 
107                                         page-cache for all operations. This mode works ideally with high-end storage HBAs and for applications that 
108                                         either do not need caching between application and disk or need the large block throughput.</span></li>
109                                 <li><span><strong>User space mode</strong> using scst_user device handler, which allows to implement in the 
110                                         user space virtual SCSI devices in the SCST environment.</span></li>
111                                 <li><span><strong>"Performance" device handlers</strong>, which provide in pseudo pass-through mode a way for 
112                                         direct performance measurements without overhead of actual data transferring from/to underlying SCSI device.
113                                         </span></li>
114                                 </ul>                   \r
115                         </div>\r
116                         <div id="rightbar">\r
117                                 <h1>Documentation</h1>
118                                 <p><a href="scst_pg.html">HTML</a></p>
119                                 <p><a href="scst_pg.pdf">PDF</a></p>
120                                 <p><a href="iscsi-scst-howto.txt">HOWTO For iSCSI-SCST</a></p>
121                                 <p><a href="qla2x00t-howto.html">HOWTO For QLogic Target Driver</a></p>
122                                 <p><a href="scst_user_spec.txt">SCST User Interface Description</a></p>
123                                 <h1>SCST 0.9.6 graphs</h1>
124                                 <p><a href=images/init_scst.png>init_scst</a></p>
125                                 <p><a href=images/scst_cmd_thread.png>scst_cmd_thread</a></p>                           
126                                 <p><a href=images/scst_mgmt_cmd_thread.png>scst_mgmt_cmd_thread</a></p>
127                                 <p><a href=images/scst_mgmt_thread.png>scst_mgmt_thread</a></p>
128                                 <p>by Ming Zhang</p>
129                                 <h1>QUESTIONS</h1>
130                                 <p>If you have any questions you can ask them via<br><a href=>
131                                         scst-devel mailing list</a><br><br> 
132                                         See <a href=>mailing lists page</a> for more info about SCST mailing 
133                                         lists.</p>
134                                 <h1>SourceForge</h1>\r
135                                 <p><a href="">
136                                         <img src=";type=2" alt=" Logo" border="0">
137                                         </a></p>                \r
138                         </div>\r
139         </div>\r
140 </div>          \r
141 <!-- footer starts here -->             \r
142                 <div id="footer">\r
143                         <p>\r
144                         &copy; Copyright 2008 <b><font color="#EC981F">Vladislav Bolkhovitin & others.</font>&nbsp;&nbsp;\r
145                         Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;         \r
146                         \r
147                         </p>            \r
148                 </div>  \r
149 <!-- footer ends here -->\r
150 </body>\r
151 </html>