New web look

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@421 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2008-06-26 11:52:09 +00:00
parent 07f7cadb34
commit 8b7d94f811
47 changed files with 8225 additions and 595 deletions

87
www/downloads.html Normal file
View File

@@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li><a href="targets.html">Drivers</a></li>
<li id="current"><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="main">
<h1>Stable SCST Releases</h1>
<p>The latest stable version of SCST core is <strong>0.9.5.2</strong>. It requires Linux kernel 2.6.14 or higher. Tested mostly on
<strong>i386</strong> and <strong>x86_64</strong>, but should also work on any other supported by Linux platform. More detail
information you could find in its <strong>README</strong> file.</p>
<p>The latest development version of <strong>SCST core</strong>, <strong>target drivers</strong> and
<strong>user space utilities</strong> is available directly from the
project's <strong>SVN</strong>. The <strong>SCST</strong> release policy is to make stable releases once or twice a
year, with the only exception if the current stable version contains a critical bug. But every commit in the
<strong>SVN</strong> is carefully tested, so you can consider them as mini releases. Therefore on practice the
development version in the <strong>SVN</strong> is usually more stable, than the <i>"stable"</i>, i.e. released,
one.</p>
<p>You can access it using either <a href="http://scst.svn.sourceforge.net/">web-based SVN repository viewer</a> or
using anonymous access:</p>
<p><code>svn co https://scst.svn.sourceforge.net/svnroot/scst</code></p>
<p>More information about accessing SVN repository may be found
<a href="http://sourceforge.net/docs/E09">here</a>.</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.</p>
<p class="post-footer align-right">
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471" class="readmore">Download released versions</a>
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
</p>
</div>
<div id="rightbar">
<h1>Stable Releases</h1>
<h3>:: scst</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=119351&release_id=481008">scst-0.9.5.2.tar.gz</a></li></ul>
<h3>:: scstadmin</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=214972&release_id=471038">scstadmin-0.9.5.tar.gz</a></li></ul>
<h3>:: qla2x00-target</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=179019&release_id=468027">qla2x00t-0.9.5.tar.gz</a></li></ul>
<h3>:: doc-src</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=167573&release_id=392287">doc-0.9.3-pre4.tgz</a></li></ul>
<h3>:: qla2x00-target-24</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=119682&release_id=391968">qla2x00-target-0.9.3.4.tgz</a></li></ul>
<h3>:: scst-24</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=186837&release_id=408795">scst-0.9.3.1-24.tar.gz</a></li></ul>
<h3>:: unh-iscsi-1.6.0-scst</h3>
<ul><li><a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=163033&release_id=354950">unh_iscsi.1.6.00-scst.patch</a></li></ul>
</div>
</div>
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

325
www/images/Orange.css Normal file
View File

@@ -0,0 +1,325 @@
* { margin: 0; padding: 0; }
body {
margin: 0; padding: 0;
font: 71%/1.5em Verdana, 'Trebuchet MS', Arial, Sans-serif;
background: url(headerbg-orange.gif) repeat-x;
color: #666666;
text-align: center;
}
/* links */
a {
background: inherit;
color: #EC981F;
}
a:hover {
background: inherit;
color: #806B4D;
}
/* headers */
h1, h2, h3 {
font: bold 1em 'Trebuchet MS', Tahoma, Sans-serif;
text-transform: uppercase;
color: #555;
}
h1 { font-size: 1.5em; }
h2 { font-size: 1.3em; }
h3 { font-size: 1.2em; text-transform: none;}
#main h1, #rightbar h1 {
padding: 10px 0 5px 5px;
margin: 0 0 0 10px;
text-transform: uppercase;
border-bottom: 1px solid #f2f2f2;
}
#sidebar h1 {
padding: 10px 0px 5px 30px;
background: url(square_arrow.gif) no-repeat 2px 12px;
margin: 0;
text-transform: uppercase;
}
p, h1, h2, h3 { margin: 10px 15px; }
ul, ol {
margin: 10px 30px;
padding: 0 15px;
color: #EC981F;
}
ul span, ol span { color: #666666; }
/* images */
/* img { border: 2px solid #CCC; } */
img.float-right { margin: 5px 0px 5px 15px; }
img.float-left { margin: 5px 15px 5px 0px; }
a img { border: 2px solid #EC981F; }
a:hover img { border: 2px solid #806B4D !important;border: 2px solid #EC981F; }
code {
margin: 5px 0;
padding: 10px;
text-align: left;
display: block;
overflow: auto;
font: 500 1em/1.5em 'Lucida Console', 'courier new', monospace;
background: #FAFAFA;
border: 1px solid #f2f2f2;
border-left: 3px solid #EC981F;
}
acronym { cursor: help;border-bottom: 1px solid #777; }
blockquote {
margin: 15px;
padding: 0 0 0 32px;
background: #FAFAFA url(quote.gif) no-repeat 5px 10px !important;
background-position: 8px 10px;
border: 1px solid #f2f2f2;
border-left: 3px solid #EC981F;
font-weight: bold;
}
/* form elements */
form {
margin:10px; padding: 0;
border: 1px solid #f2f2f2;
background-color: #FAFAFA;
}
label {
display:block;
font-weight:bold;
margin:5px 0;
}
input {
padding: 4px;
border:1px solid #eee;
font: normal 1em/1.5em Verdana, sans-serif;
color:#777;
}
textarea {
width:350px;
padding:4px;
font: normal 1em/1.5em Verdana, sans-serif;
border:1px solid #eee;
height:100px;
display:block;
color:#777;
}
input.button {
margin: 0;
font: bold 1em Arial, Sans-serif;
border: 1px solid #CCC;
background: #FFF;
padding: 2px 3px;
color: #333;
}
/* search form */
form.searchform {
background: transparent;
border: none;
margin: 0; padding: 0;
}
form.searchform input.textbox {
margin: 0;
width: 120px;
border: 1px solid #CCC;
background: #FFF;
color: #333;
vertical-align: top;
}
form.searchform input.button {
width: 55px;
vertical-align: top;
}
/*****************/
/* Layout */
/*****************/
#wrap {
margin: 0 auto;
width: 850px;
text-align: left;
background: #FFF;
}
#content-wrap {
clear:both;
margin: 0; padding:0;
width: 850px;
}
/* header */
#header {
position: relative;
background: url(headerbg-orange.gif) repeat-x 0% 0%;
height: 84px;
}
div.logoimg {
position: relative;
background: url(logo.gif) no-repeat;
top: 15px;
height: 50px;
}
#header h1#logo {
position: absolute;
margin: 0; padding: 0;
font: bolder 4.1em 'Trebuchet MS', Arial, Sans-serif;
letter-spacing: -2px;
color: #CCC;
/*text-transform: lowercase;*/
/* change the values of top and Left to adjust the position of the logo*/
top: 0; left: 55px;
}
#header h2#slogan {
position: absolute;
margin: 0; padding: 0;
font: bold 2em 'Trebuchet MS', Arial, Sans-serif;
text-transform: none;
color: #FFF;
/* change the values of top and Left to adjust the position of the slogan*/
top: 30px; left:65px;
}
#header .searchform {
position: absolute;
top: 5px; right: 3px;
}
/* main column */
#main {
float: left;
margin-left: 15px;
padding: 0;
/*width: 54%;*/
width: 72%;*
border-left: 1px solid #f2f2f2;
}
.post-footer {
background-color: #FAFAFA;
padding: 5px; margin-top: 20px;
font-size: 95%;
border: 1px solid #f2f2f2;
}
.post-footer .date {
background: url(clock.gif) no-repeat left center;
padding-left: 20px; margin: 0 10px 0 5px;
}
.post-footer .comments {
background: url(comment.gif) no-repeat left center;
padding-left: 20px; margin: 0 10px 0 5px;
}
.post-footer .readmore {
background: url(page.gif) no-repeat left center;
padding-left: 20px; margin: 0 10px 0 5px;
}
/* sideabar */
#sidebar {
float: left;
width: 24%;
margin: 0; padding: 0;
display: inline;
}
#sidebar ul.sidemenu {
list-style: none;
text-align: left;
margin: 0 0 8px 0;
padding-right: 0;
text-decoration: none;
}
#sidebar ul.sidemenu li {
border-bottom: 1px solid #EFF0F1;
background: url(arrow.gif) no-repeat 2px 5px;
padding: 2px 5px 2px 20px;
}
* html body #sidebar ul.sidemenu li { height: 1%; }
#sidebar ul.sidemenu a {
font-weight: bold;
background-image: none;
text-decoration: none;
}
/* rightbar */
#rightbar {
float: right;
width: 24%;
padding: 0; margin: 0;
}
/* footer */
#footer {
clear: both;
background: #FFF url(footerbg.gif) repeat-x left top;
border-top: 1px solid #F2F2F2;
text-align: center;
height: 50px;
}
#footer a {
text-decoration: none;
font-weight: bold;
}
/* menu */
#menu {
clear: both;
margin: 0; padding: 0;
}
#menu ul {
position: relative;
bottom: 4px;
margin: 0; padding: 0;
float: left;
font: bold 1.4em 'Trebuchet MS', Tahoma, Arial, Sans-serif;
width: 850px;/* 775px; */
border: 1px solid #808080;
border-width: 0 0 4px 0;
list-style: none;
}
#menu ul li{
display: inline;
}
#menu ul li a {
position: relative; bottom: -4px;
float: left;
color: #808080;
padding: 0px 10px;
text-decoration: none;
background: white url(menudivide.gif) repeat-y right top;
border-bottom: 4px solid #808080;
}
#menu ul li a:hover{
color: black;
background-color: #F3F3F3;
border-bottom: 4px solid #FFA600;
}
#menu ul li#current a{
color: #333;
background-color: #F3F3F3;
border-bottom: 4px solid #FFA600;
}
/* Alignment classes */
.float-left { float: left;}
.float-right { float: right; }
.align-left { text-align: left; }
.align-right { text-align: right; }
.align-center { text-align: center; }
.align-justify { text-align: justify; }
/* display classes */
.clear { clear: both; }
.block { display: block; }
.hide { display: none; }
.orange { color: #FFA600; }

BIN
www/images/arrow.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

BIN
www/images/clock.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

BIN
www/images/comment.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

BIN
www/images/fig1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
www/images/fig2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
www/images/fig3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
www/images/fig4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
www/images/footerbg.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

BIN
www/images/headerbg.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

BIN
www/images/logo.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
www/images/menubg.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 B

BIN
www/images/menudivide.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

BIN
www/images/page.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

BIN
www/images/quote.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

View File

Before

Width:  |  Height:  |  Size: 254 KiB

After

Width:  |  Height:  |  Size: 254 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 303 KiB

After

Width:  |  Height:  |  Size: 303 KiB

BIN
www/images/square_arrow.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

BIN
www/images/t_fcoe.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
www/images/t_lsi.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
www/images/t_qlogic.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
www/images/t_rdma.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
www/images/t_unsupported.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -1,15 +1,148 @@
<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>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li id="current"><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<div id="content-wrap">
<div id="main">
<h1>Generic SCSI Target Middle Level for Linux</h1>
<p>The <strong>SCSI target mid-level subsystem for Linux (SCST)</strong> 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.</p>
<p>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. <strong>SCSI bus, SAS, Fibre Channel or iSCSI</strong>.
This is commonly used for data storage virtualization.</p>
<frameset rows=* cols=25%,*>
<frame src="menu.html" />
<frame src="main.html" name="showframe" />
</frameset>
</HTML>
<p>This project consists from a set of subprojects: <strong>SCST core</strong> itself
as well as <strong>target drivers</strong> and <strong>user space utilities</strong>.
They are developed more or less independently and have own maintainers.</p>
<h1>Features of SCST Core</h1>
<ul>
<li><span>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.</span></li>
<li><span>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.</span></li>
<li><span>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. </span></li>
<li><span>Device handlers, i.e. plugins, architecture provides extra flexibility by allowing various I/O
modes in backstorage handling. For example, pass-through device handlers allows to use real
SCSI hardware and vdisk device handler allows to use files as virtual disks.</span></li>
<li><span>Provides advanced per-initiator device 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.</span></li>
<li><span>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 <a href=http://www.mail-archive.com/linux-scsi@vger.kernel.org/msg06911.html>this</a>
message in thread "Question for pass-through target design" in linux-scsi mailing list. Some of the emulated functions are the following:
<ul>
<li><span>Generation of necessary UNIT ATTENTIONs, their storage and delivery to all connected
remote initiators.</span></li>
<li><span>RESERVE/RELEASE functionality.</span></li>
<li><span>CA/ACA conditions (not implemented yet).</span></li>
<li><span>All types of RESETs and other task management functions.</span></li>
<li><span>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 core responds with error on all
commands to non-existing devices and provides access control, so different remote
initiators could see different set of devices.</span></li>
<li><span>Other necessary functionality (task attributes, etc.) as specified in SAM-2, SPC-2, SAM-3,
SPC-3 and other SCSI standards.</span></li>
</ul>
</span></li>
<li><span>Multithreaded design and complete SMP support, so, if necessary, all your processors will participate in the commands
processing.</span></li>
<li><span>Well documented.</span></li>
</ul>
<p>Interoperability between SCST core 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.</p>
<p>Interface between SCST core 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 was developed on <a href="http://unh-iscsi.sourceforge.net/">SourceForge.net</a>.</p>
<h1>SCST core supports the following I/O modes</h1>
<ul>
<li><span><strong>Pass-through mode</strong> with one to many relationship, i.e. when multiple initiators can
connect to the exported pass-through devices, for virtually all SCSI devices types: <strong>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)</strong></span></li>
<li><span><strong>FILEIO mode</strong>, which allows to use files on file systems or block devices as virtual
remotely available SCSI disks or CDROMs with benefits of the <strong>Linux page cache</strong></span></li>
<li><span><strong>BLOCKIO mode</strong>, 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.</span></li>
<li><span><strong>User space mode</strong> using scst_user device handler, which allows to implement in the
user space virtual SCSI devices in the SCST environment</span></li>
<li><span><strong>"Performance" device handlers</strong>, which provide in pseudo pass-through mode a way for
direct performance measurements without overhead of actual data transferring from/to underlying SCSI device
</span></li>
</ul>
</div>
<div id="rightbar">
<h1>Documentation</h1>
<p><a href="scst_pg.html">HTML</a></p>
<p><a href="scst_pg.pdf">PDF</a></p>
<p><a href="scst_user_spec.txt">SCST User Interface Description</a></p>
<h1>SCST 0.9.6 graphs</h1>
<p><a href=images/init_scst.png>init_scst</a></p>
<p><a href=images/scst_cmd_thread.png>scst_cmd_thread</a></p>
<p><a href=images/scst_mgmt_cmd_thread.png>scst_mgmt_cmd_thread</a></p>
<p><a href=images/scst_mgmt_thread.png>scst_mgmt_thread</a></p>
<p>by Ming Zhang</p>
<h1>QUESTIONS</h1>
<p>If you have any questions you can ask them via<br><a href=https://lists.sourceforge.net/lists/listinfo/scst-devel>
scst-devel mailing list</a><br><br>
See <a href=http://sourceforge.net/mail/?group_id=110471>mailing lists page</a> for more info about SCST mailing
lists.</p>
<h1>SourceForge</h1>
<p><a href="http://sourceforge.net">
<img src="http://sourceforge.net/sflogo.php?group_id=110471&amp;type=2" alt="SourceForge.net Logo" border="0">
</a></p>
</div>
</div>
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

View File

@@ -1,200 +0,0 @@
<!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>
<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, SAS, Fibre Channel or 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. <br>
</li>
<li>Device handlers, i.e. plugins, architecture provides extra
flexibility by allowing various I/O modes in backstorage handling. For
example, pass-through device handlers allows to use real SCSI hardware
and vdisk device
handler allows to use files as virtual disks.</li>
<li>Provides advanced per-initiator device 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 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> Multithreaded design and complete SMP support, so all your
processors will participate in the commands processing.<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 was 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 SCST 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 via&nbsp;<a
href="https://lists.sourceforge.net/lists/listinfo/scst-devel">scst-devel
mailing list</a>.
See <a href="http://www.sourceforge.net/projects/scst">main SCST
SF.net page</a>&nbsp; for more info about SCST mailing lists.
</p>
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 once
or
twice a year, with the only exception if the current stable version
contains a critical bug. But every commit in the SVN is carefully
tested, so you can consider them as mini releases. Therefore on
practice the development version
in the SVN
is usually more stable, than the "stable", i.e. released, one. You can
access it using
either <a href="http://scst.svn.sourceforge.net/">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>
<p><a href="http://www.sourceforge.net/projects/scst">Main SCST project
page on </a><a href="http://www.sourceforge.net/projects/scst">SF.net</a><br>
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download
released versions</a><br>
<a href="ChangeLog.scst">Change Log</a><br>
</p>
<hr style="width: 100%; height: 1px;">
<p><a href="index.html">Index</a>
</p>
</body>
</html>

View File

@@ -1,35 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>SCST menu</title>
</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>
<br>
<br>
<a href="main.html" target="showframe">Home</a><br>
<a href="scstadmin.html" target="showframe">SCST admin</a><br>
<a href="targets.html#iscsi-scst" target="showframe">iSCSI-SCST</a><br>
<a href="targets.html#qla2x00" target="showframe">Target driver for
QLogic
2200/2300 cards</a><br>
<a href="targets.html#qla_isp" target="showframe">Target driver for
QLogic ISP
chipsets</a><br>
<a href="targets.html#srpt" target="showframe">SCSI RDMA Protocol (SRP)
Target driver</a><br>
<a href="targets.html#fcoe" target="showframe">Open-FCoE software target</a><br>
<a href="targets.html#lsi" target="showframe">Target driver for LSI/MPT
cards</a><br>
<a href="old-targets.html" target="showframe">Old unsupported target
drivers</a><br>
<hr style="width: 100%; height: 2px;"><a href="scst-stgt.html"
target="showframe">SCST vs
STGT</a><br>
<br>
</body>
</html>

View File

@@ -1,83 +0,0 @@
<!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>
<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.<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><br>
<br>
<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>
<hr style="width: 100%; height: 2px;"><a href="main.html">Main</a>&nbsp;<a
href="index.html">Index</a>
</body>
</html>

View File

@@ -1,53 +0,0 @@
<!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://stgt.berlios.de/">STGT</a> is alternative, independent
from SCST implementation of SCSI target framework for Linux. It has
different architecture, where SCSI target state machine is placed in
the user space, while in SCST all the processing done in the kernel.
Such architecture was acknowledged as a "right" one by the Linux SCSI
subsystem maintainers, so kernel's part of STGT quickly found its way
to the kernel. But such architecture has two inherent problems, namely
performance and complexity. See this thread: <a
href="http://sourceforge.net/mailarchive/forum.php?thread_name=472F7FA4.7040303%40wpkg.org&amp;forum_name=scst-devel">http://sourceforge.net/mailarchive/forum.php?thread_name=472F7FA4.7040303%40wpkg.org&amp;forum_name=scst-devel</a>
and this message:&nbsp; <a
href="http://thread.gmane.org/gmane.linux.scsi/36417/focus=37273">http://thread.gmane.org/gmane.linux.scsi/36417/focus=37273</a>
for more details.<br>
<br>
See also the following important discussions:<br>
<ul>
<li><a
href="http://news.gmane.org/find-root.php?message_id=%3c43987F75.2000301%40vlnb.net%3e">http://news.gmane.org/find-root.php?message_id=%3c43987F75.2000301%40vlnb.net%3e</a>,
especially pay attention to this message: <a
href="http://article.gmane.org/gmane.linux.scsi/21073">http://article.gmane.org/gmane.linux.scsi/21073</a>
for motivation behind considering STGT's architecture "right".</li>
<li><a
href="http://news.gmane.org/find-root.php?message_id=%3c463F36AC.3010207%40vlnb.net%3e">http://news.gmane.org/find-root.php?message_id=%3c463F36AC.3010207%40vlnb.net%3e</a></li>
<li><a
href="http://news.gmane.org/find-root.php?message_id=%3ce2e108260801170127w2937b2afg9bef324efa945e43%40mail.gmail.com%3e">http://news.gmane.org/find-root.php?message_id=%3ce2e108260801170127w2937b2afg9bef324efa945e43%40mail.gmail.com%3e</a>
for performance comparison.<br>
</li>
</ul>
Also you shouldn't be deceived by the fact
that some (small) part of STGT was accepted in the kernel. It doesn't
mean that STGT has the "kernel quality". In fact, STGT as a whole
similarly to any other out-of-tree project lives on its own, hence has
its own quality level, which isn't necessary better, than the quality
level of SCST. Actually, from such important aspect of quality as
simplicity, it might be quite contrary: e.g. SCST isn't required to
support HIGHMEM (nowadays it isn't necessary, but required for all
in-kernel components), which allowed to simplify memory management a
lot.<br>
<br>
<hr style="width: 100%; height: 1px;"><a href="main.html">Main</a>&nbsp;<a
href="index.html">Index</a><br>
<br>
</body>
</html>

79
www/scst_admin.html Normal file
View File

@@ -0,0 +1,79 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>SCST administration utility</h1>
<p>SCST administration utility <strong>"scstadmin"</strong> is developed by Mark Buechler.<br><br>With it you can
manually or automatically using either plain text config file, or MySQL database configure every aspect of SCST.</p>
<p>Especially useful feature of <strong>scstadmin</strong> is ability to figure out and apply on the currently
running system <strong>changes</strong> in scst.conf file. In other words, you can have SCST subsystem running with configuration from file
scst.conf, then you edit this file, e.g. add new devices, then scstadmin will figure out that you added those devices
and add them to SCST.</p>
<p class="post-footer align-right">
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=214972&release_id=471038" class="readmore">Download</a>
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
</p>
<p><span><table height="300px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
</div>
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>

1101
www/scst_pg.html Normal file

File diff suppressed because it is too large Load Diff

4828
www/scst_pg.pdf Normal file

File diff suppressed because it is too large Load Diff

876
www/scst_user_spec.txt Normal file
View File

@@ -0,0 +1,876 @@
SCST USER SPACE DEVICE HANDLER MODULE.
USER SPACE INTERFACE DESCRIPTION.
Version 1.0.0
I. Description.
SCST user space device handler module scst_user is a device handler for
SCST, which provides a way to implement in the user space complete, full
feature virtual SCSI devices in the SCST environment.
This document assumes that the reader is familiar with the SCST
architecture and the states through which SCSI commands go during
processing in SCST. Module scst_user basically only provides hooks to
them. Their description could be found on the SCST web page on
http://scst.st.net.
II. User space API.
Module scst_user provides /dev/scst_user character device with the
following system calls available:
- open() - allows to open the device and get a file handle, which
will be used in all subsequent actions until close() is called
- close() - closes file handle returned by open()
- poll() - allows to wait until some pending command from SCST to
process is available.
- ioctl() - main call, which allows commands interchange with the SCST
core.
Device /dev/scst_user could be opened in blocking or non-blocking mode
using O_NONBLOCK flag. In the blocking mode ioctl()
SCST_USER_REPLY_GET_CMD function blocks until there is a new subcommand
to process. In the non-blocking mode if there are no pending subcommands
SCST_USER_REPLY_GET_CMD function returns immediately with EAGAIN error
code, and the user space device handler can use poll() call to get
notification about new subcommands arrival. The blocking mode is the
default.
The module scst_user API is defined in scst_user.h file.
III. IOCTL() functions.
There are following IOCTL functions available. All of them has one
argument. They all, except SCST_USER_REGISTER_DEVICE return 0 for
success or -1 in case of error, and errno is set appropriately.
1. SCST_USER_REGISTER_DEVICE
SCST_USER_REGISTER_DEVICE - registers new virtual user space device. The
argument is:
struct scst_user_dev_desc
{
uint8_t version;
uint8_t type;
uint8_t has_own_order_mgmt;
struct scst_user_opt opt;
uint32_t block_size;
char name[SCST_MAX_NAME];
},
where:
- version - is a protocol version, shall be DEV_USER_VERSION
- type - SCSI type of the device
- has_own_order_mgmt - set it in non-zero, if device implements own
ORDERED commands management, i.e. guarantees commands execution order
requirements, specified by SAM.
- opt - device options, see SCST_USER_SET_OPTIONS/SCST_USER_GET_OPTIONS below
- block_size - block size, shall be divisible by 512 for block devices
- name - name of the device
SCST_USER_REGISTER_DEVICE returns registered device's handler or -1
in case of error, and errno is set appropriately.
In order to unregister the device just call close() on its file descriptor.
3. SCST_USER_SET_OPTIONS/SCST_USER_GET_OPTIONS
SCST_USER_SET_OPTIONS/SCST_USER_GET_OPTIONS allows to set or get
correspondingly various options that control various aspects of SCSI
commands processing.
The argument is:
struct scst_user_opt
{
uint8_t parse_type;
uint8_t on_free_cmd_type;
uint8_t memory_reuse_type;
uint8_t partial_transfers_type;
uint32_t partial_len;
uint8_t tst;
uint8_t queue_alg;
uint8_t tas;
uint8_t swp;
},
where:
- parse_type - defines how the user space handler wants to process
PARSE subcommand. Possible values are:
* SCST_USER_PARSE_STANDARD - tells SCST use standard internal parser
for this SCSI device type.
* SCST_USER_PARSE_CALL - tells SCST generate SCST_USER_PARSE for all
SCSI commands
* SCST_USER_PARSE_EXCEPTION - tells SCST generate SCST_USER_PARSE
for unknown SCSI commands or SCSI commands that produce errors in
the standard parser.
- on_free_cmd_type - defines how the user space handler wants to
process ON_FREE_CMD subcommand. Possible values are:
* SCST_USER_ON_FREE_CMD_CALL - tells SCST generate
SCST_USER_ON_FREE_CMD for all SCSI commands
* SCST_USER_ON_FREE_CMD_IGNORE - tells SCST do nothing on this event.
- memory_reuse_type - defines how memory allocated by the user space
handler for a SCSI commands data buffers is then reused by the SCST
core as data buffer for subsequent commands. Possible values are:
* SCST_USER_MEM_NO_REUSE - no memory reuse is possible, for each
commands the user space handler will each time allocate a dedicated
data buffer
* SCST_USER_MEM_REUSE_READ - memory reuse by only READ-type commands
(i.e. which involve data transfer from target to initiator) is
allowed. For all WRITE-type commands (i.e. which involves data
transfer from initiator to target) the user space handler will
each time allocate a dedicated data buffer
* SCST_USER_MEM_REUSE_WRITE - memory reuse by only WRITE-type
commands is allowed. For all WRITE-type commands the user space
handler will each time allocate a dedicated data buffer
* SCST_USER_MEM_REUSE_ALL - unlimited memory reuse is possible.
- partial_transfers_type - defines if the user space handler supports
partial data transfers, when a SCSI command, which required big data
transfer, is broken on several subcommands with smaller data
transfers. This allows to improve performance by simultaneous data
transfers from/to remote initiator and to/from the underlying storage
device as well as lower allocation memory requirements for each
(sub)command. All subcommands will have the same unique value in
"parent_cmd_h" field and SCST_USER_SUBCOMMAND flag in "partial" field
of struct scst_user_scsi_cmd_exec. The final subcommand will also
have in that field SCST_USER_SUBCOMMAND_FINAL flag. All the
subcommands will have the original unmodified CDB. Possible values
are:
* SCST_USER_PARTIAL_TRANSFERS_NOT_SUPPORTED - the partial data
transfers are not supported
* SCST_USER_PARTIAL_TRANSFERS_SUPPORTED_ORDERED - the partial data
transfers are supported, but all the subcommands must come in order
of data chunks. Could be used, e.g., for tape devices.
* SCST_USER_PARTIAL_TRANSFERS_SUPPORTED - the partial data transfers
are supported without limitations.
- tst, queue_alg, tas and swp - set values for TST, QUEUE ALGORITHM MODIFIER,
TAS and SWP fields from control mode page correspondingly, see SPC.
Flags parse_type and on_free_cmd_type are designed to improve
performance by eliminating context switches to the user space handler,
when processing of the corresponding events isn't needed.
Flag memory_reuse_type is designed to improve performance by eliminating
memory allocation, preparation and then freeing each time for each
commands, if the same memory will be allocated again and again. See
SCST_USER_ALLOC_MEM description below for more info.
SCST_USER_SET_OPTIONS should not be used from the same and the only
thread, which also handles incoming commands, otherwise there could be a
"deadlock", when SCST_USER_SET_OPTIONS waits for active commands finish,
but nobody handles them. This "deadlock" will be resolved only when
initiator, which sent those commands, aborts them after timeout.
4. SCST_USER_REPLY_AND_GET_CMD
SCST_USER_REPLY_AND_GET_CMD allows at one call reply on the current
subcommand from SCST and get the next one. If 0 is returned by ioctl(),
SCST_USER_REPLY_AND_GET_CMD returns a SCST subcommand in the argument,
which is defined as the following:
struct scst_user_get_cmd
{
uint64_t preply;
uint32_t cmd_h;
uint32_t subcode;
union {
struct scst_user_sess sess;
struct scst_user_scsi_cmd_parse parse_cmd;
struct scst_user_scsi_cmd_alloc_mem alloc_cmd;
struct scst_user_scsi_cmd_exec exec_cmd;
struct scst_user_scsi_on_free_cmd on_free_cmd;
struct scst_user_on_cached_mem_free on_cached_mem_free;
struct scst_user_tm tm_cmd;
};
},
where:
- preply - pointer to the reply data or, if 0, there is no reply. See
SCST_USER_REPLY_CMD for description of struct scst_user_reply_cmd
fields
- cmd_h - command handle used to identify the command in the reply.
- subcode - subcommand code, see 4.1 below
Union contains command's specific payload.
For all received subcommands the user space device handler shall call
SCST_USER_REPLY_AND_GET_CMD or SCST_USER_REPLY_CMD function to tell SCST
that the subcommand's processing is finished, although some subcommands
don't return a value.
4.1. Possible subcommands:
4.1.1. SCST_USER_ATTACH_SESS
SCST_USER_ATTACH_SESS notifies the user space handler that a new
initiator's session is about to be attached to the device. Payload
contains struct scst_user_sess, which is defined as the following:
struct scst_user_sess
{
uint64_t sess_h;
uint64_t lun;
uint16_t threads_num;
uint8_t rd_only;
char initiator_name[SCST_MAX_NAME];
},
where:
- sess_h - session's handle, may not be 0
- lun - assigned LUN for this device in this session
- threads_num - specifies amount of additional threads, requested by
the corresponding target driver
- rd_only - if true, this device is read only in this session
- initiator_name - name of the remote initiator, which initiated this
session
When SCST_USER_ATTACH_SESS is returned, it is guaranteed that there are
no other commands are being executed or pending.
After SCST_USER_ATTACH_SESS function completed, the user space device
handler shall reply using "result" field of the corresponding reply
command.
4.1.2. SCST_USER_DETACH_SESS
SCST_USER_DETACH_SESS notifies the user space handler that the
corresponding initiator is about to be detached from the particular
device. Payload contains struct scst_user_sess, where only handle field
is valid.
When SCST_USER_DETACH_SESS is returned, it is guaranteed that there are
no other commands are being executed or pending.
This command doesn't reply any return value, although
SCST_USER_REPLY_AND_GET_CMD or SCST_USER_REPLY_CMD function must be
called.
4.1.3. SCST_USER_PARSE
SCST_USER_PARSE returns SCSI command on PARSE state of the SCST
processing. The PARSE state is intended to check validity of the
command, determine data transfer type and the necessary data buffer
size. This subcommand is returned only if SCST_USER_SET_OPTIONS
parse_type isn't set to SCST_USER_PARSE_STANDARD. In this case the
standard SCST internal parser for this SCSI device type will do all the
job.
Payload contains struct scst_user_scsi_cmd_parse, which is defined as
the following:
struct scst_user_scsi_cmd_parse
{
uint64_t sess_h;
uint8_t cdb[SCST_MAX_CDB_SIZE];
int32_t cdb_len;
uint32_t timeout;
int32_t bufflen;
uint8_t queue_type;
uint8_t data_direction;
uint8_t expected_values_set;
uint8_t expected_data_direction;
int32_t expected_transfer_len;
uint32_t sn;
},
where:
- sess_h - corresponding session handler
- cdb - SCSI CDB
- cdb_len - SCSI CDB length
- timeout - CDB execution timeout
- bufflen - command's buffer length
- queue_type - SCSI task attribute (queue type)
- data_direction - command's data flow direction, one of SCST_DATA_*
constants
- expected_values_set - true if expected_data_direction and
expected_transfer_len contain valid values
- expected_data_direction - remote initiator supplied command's data
flow direction
- expected_transfer_len - remote initiator supplied transfer length
- sn - command's SN, which might be used for task management
In the PARSE state of SCSI commands processing the user space device
handler shall check and provide SCST values for command data buffer
length, data flow direction and timeout, which it shall reply using the
corresponding reply command.
In case of any error the error reporting should be deferred until
SCST_USER_EXEC subcommand, where the appropriate SAM status and sense
shall be set.
4.4.4. SCST_USER_ALLOC_MEM
SCST_USER_ALLOC_MEM returns SCSI command on memory allocation state of
the SCST processing. On this state the user space device handler shall
allocate the command's data buffer with bufflen length and then return
it to SCST using the corresponding reply command. Then SCST internally
will convert it in SG vector in order to use it itself and by target
drivers.
If the memory reuse type is disabled (i.e. set to SCST_USER_MEM_NO_REUSE)
there are no special requirements for buffer memory or its alignment, it
could be just what malloc() returned. If the memory reuse type is enabled,
the buffer shall be page size aligned, for example using memalign()
function.
Payload contains struct scst_user_scsi_cmd_alloc_mem, which is defined
as the following:
struct scst_user_scsi_cmd_alloc_mem
{
uint64_t sess_h;
uint8_t cdb[SCST_MAX_CDB_SIZE];
int32_t cdb_len;
int32_t alloc_len;
uint8_t queue_type;
uint8_t data_direction;
uint32_t sn;
},
where:
- sess_h - corresponding session handler
- cdb - SCSI CDB
- cdb_len - SCSI CDB length
- alloc_len - command's buffer length
- queue_type - SCSI task attribute (queue type )
- data_direction - command's data flow direction, one of SCST_DATA_*
constants
- sn - command's SN, which might be used for task management
Memory allocation, preparation and freeing are ones of the most
complicated and expensive operations during SCSI commands processing.
Module scst_user provides a way to almost completely eliminate those
operations by reusing once allocated memory for subsequent SCSI
commands. It is controlled by memory_reuse_type option, which could be
set by SCST_USER_SET_OPTIONS function. If any type memory reusage is
enabled, then SCST will use its internal SGV cache in order to cache
allocated and fully built SG vectors for subsequent commands of this
type, so for them SCST_USER_ALLOC_MEM subfunction will not be called and
in SCST_USER_EXEC pbuf pointer will point to that reused buffer.
SGV cache is a backend cache made on top of Linux kernel SLAB cache. It
caches SG vectors with power of 2 data sizes: 4K, 8K, ..., 4M. So, if
there is a 5K SCSI command coming, then the user space handler will be
asked for 8K allocation, from which only 5K will be used for this
particular SCSI command. Then that SG vector will be cached and
subsequently reused for all SCSI commands between 4K and 8K. For a 1M
SCSI command the user space handler will be asked for another buffer
(while the previous 5K one will be kept), which will not be then reused
for 5K SCSI commands, since 1M and 5K vectors belong to different cache
data sizes, it will be reused only for commands between 512K and 1M.
Then, after some time of inactivity or when the system is under memory
pressure, the cache entries will be freed and the user space handler
will be notified using SCST_USER_ON_CACHED_MEM_FREE.
Since SGV cache caches SG vectors with power of 2 data sizes, alloc_len
field could be up to 2 times more, than actually required by the SCSI
command.
The memory reuse could be used in both SCSI tagged and untagged queuing
environments. In the SCSI tagged queuing environment the SGV cache will
take care that several commands don't use the same buffer simultaneously
by asking the user space handler to allocate a new data buffer, when all
cached ones are busy.
Some important notes:
1. If the user space handler needs to call fork(), it must call
madvise() with MADV_DONTFORK flag for all allocated data buffers,
otherwise parent or child process could loose the connection with them,
which could lead to data corruption. See http://lwn.net/Articles/171941/
for details.
2. The interface assumes that all allocated memory by the user space
handler is DMA'able by the target hardware. This is almost always true
for most modern systems, except if the target hardware isn't capable of
using 64-bit address space and the system has >4GB of memory or the
memory addresses are in address space, which is unavailable with 32-bit
addresses.
In case of any error the error reporting should be deferred until
SCST_USER_EXEC subcommand, where the appropriate SAM status and sense
should be set.
4.4.5. SCST_USER_EXEC
SCST_USER_EXEC returns SCSI command on execution state of the SCST
processing. The user space handler should execute the SCSI command and
reply using the corresponding reply command.
In some cases for performance reasons for READ-type SCSI commands
SCST_USER_ALLOC_MEM subcommand isn't returned before SCST_USER_EXEC.
Thus, if pbuf pointer is 0 and the SCSI command needs data transfer,
the user space handler should be prepared to allocate the data buffer
with size alloc_len, which could be up to 2 times more, than actually
required by the SCSI command. But field bufflen will contain the correct
value. All the memory reusage rules, described for SCST_USER_ALLOC_MEM,
apply to SCST_USER_EXEC as well.
Payload contains struct scst_user_scsi_cmd_exec, which is defined as the
following:
struct scst_user_scsi_cmd_exec
{
uint64_t sess_h;
uint8_t cdb[SCST_MAX_CDB_SIZE];
int32_t cdb_len;
int32_t data_len;
int32_t bufflen;
int32_t alloc_len;
uint64_t pbuf;
uint8_t queue_type;
uint8_t data_direction;
uint8_t partial;
uint32_t timeout;
uint32_t sn;
uint32_t parent_cmd_h;
int32_t parent_cmd_data_len;
uint32_t partial_offset;
},
where:
- sess_h - corresponding session handler
- cdb - SCSI CDB
- cdb_len - SCSI CDB length
- data_len - command's data length. Could be different from bufflen for
commands like VERIFY, which transfer different amount of data, than
process, or even none of them
- bufflen - command's buffer length
- alloc_len - command's buffer length, which should be allocated, if pbuf
is 0 and the command requires data transfer
- pbuf - pointer to command's data buffer or 0 for SCSI commands
without data transfer.
- queue_type - SCSI task attribute (queue type)
- data_direction - command's data flow direction, one of SCST_DATA_*
constants
- partial - specifies, if the command is a partial subcommand, could
have the following OR'ed flags:
* SCST_USER_SUBCOMMAND - set if the command is a partial subcommand
* SCST_USER_SUBCOMMAND_FINAL - set if the subcommand is a final one
- timeout - CDB execution timeout
- sn - command's SN, which might be used for task management
- parent_cmd_h - has the same unique value for all partial data
transfers subcommands of one original (parent) command
- parent_cmd_data_len - for partial data transfers subcommand has the
size of the overall data transfer of the original (parent) command
- partial_offset - has offset of the subcommand in the original
(parent) command
It is guaranteed that only commands of the same queue_type per session
can be returned simultaneously.
In case of any error it should be reported via appropriate SAM status
and sense. If it happens for a subcommand of a partial data transfers
command, all other subcommands of this command, which already passed the
the user space handler or will be passed in the future, will be aborted
by scst_user, the user space handler should ignore them.
4.4.6. SCST_USER_ON_FREE_CMD
SCST_USER_ON_FREE_CMD returns SCSI command when the command is about to
be freed. At this stage, the user space device handler could do any
necessary cleanups, for instance, free allocated for data buffer memory.
NOTE! If the memory reusage is enabled, then the data buffer must not be
freed, it will be reused by subsequent SCSI commands. The buffer must be
freed only on SCST_USER_ON_CACHED_MEM_FREE event.
Payload contains struct scst_user_scsi_on_free_cmd, which is defined
as the following:
struct scst_user_scsi_on_free_cmd
{
uint64_t pbuf;
int32_t resp_data_len;
uint8_t buffer_cached;
uint8_t aborted;
uint8_t status;
uint8_t delivery_status;
},
where:
- pbuf - pointer to command's data buffer or 0 for SCSI commands
without data transfer.
- resp_data_len - length of the response data
- buffer_cached - true, if memory reusage is enabled for this command
- aborted - true, if command was aborted
- status - SAM status of the commands execution
- delivery_status - status of cmd's status/data delivery to remote
initiator. Can be:
* SCST_CMD_DELIVERY_SUCCESS - delivery succeeded
* SCST_CMD_DELIVERY_FAILED - delivery failed
The user space handler should reply using the corresponding reply
command. No error code is needed.
4.4.7. SCST_USER_ON_CACHED_MEM_FREE
SCST_USER_ON_CACHED_MEM_FREE subcommand is returned, when SGV cache
decided that this buffer isn't needed anymore. This happens after some
time of inactivity or when the system is under memory pressure.
Payload contains struct scst_user_on_cached_mem_free, which is defined
as the following:
struct scst_user_scsi_cmd_alloc_mem
{
uint64_t pbuf;
},
where:
- pbuf - pointer to buffer, which should be freed
4.4.8. SCST_USER_TASK_MGMT
SCST_USER_TASK_MGMT subcommand returns a task management functions.
Payload contains struct scst_user_tm, which is defined as the following:
struct scst_user_tm
{
uint64_t sess_h;
uint32_t fn;
uint32_t cmd_h_to_abort;
uint32_t cmd_sn;
uint8_t cmd_sn_set;
},
where:
- sess_h - corresponding session handler
- fn - task management function, see below
- cmd_h_to_abort - handle of command to abort. Valid only if fn is
SCST_ABORT_TASK
- cmd_sn - if cmd_sn_set is set, contains maximum commands SN, which
this task management function affects. See iSCSI RFC 3720 10.5.1 for
more details.
- cmd_sn_set - specifies if cmd_sn is valid
After TM function is completed, the user space device handler shall
reply using "result" field of the corresponding reply command. It isn't
necessary to wait for aborted command(s) finished, the result of TM
function shall be returned immediately. SCST core will take care that
the reply to the TM function isn't sent before all affection SCSI
commands finished.
Possible values of "fn" field:
- SCST_ABORT_TASK - cmd_h_to_abort shall be aborted
- SCST_ABORT_TASK_SET - task set on the device shall be aborted
- SCST_CLEAR_ACA - ACA status shall be cleared
- SCST_CLEAR_TASK_SET - task set on the device shall be cleared
- SCST_LUN_RESET, SCST_TARGET_RESET - reset of the device shall be done
- SCST_NEXUS_LOSS_SESS - notifies about nexus loss event for the session
- SCST_ABORT_ALL_TASKS_SESS - all tasks in the session shall be aborted
- SCST_NEXUS_LOSS - notifies about global nexus loss event
- SCST_ABORT_ALL_TASKS - all tasks shall be aborted
Possible return values are:
- SCST_MGMT_STATUS_SUCCESS - success
- SCST_MGMT_STATUS_TASK_NOT_EXIST - task does not exist
- SCST_MGMT_STATUS_LUN_NOT_EXIST - LUN does not exist
- SCST_MGMT_STATUS_FN_NOT_SUPPORTED - task management function not
supported
- SCST_MGMT_STATUS_REJECTED - task management function was rejected
- SCST_MGMT_STATUS_FAILED - task management function failed
5. SCST_USER_REPLY_CMD
SCST_USER_REPLY_CMD IOCTL function allows the user space handler to
return the result of a command's execution. Its argument is defined as:
struct scst_user_reply_cmd
{
uint32_t cmd_h;
uint32_t subcode;
union {
int32_t result;
struct scst_user_scsi_cmd_reply_parse parse_reply;
struct scst_user_scsi_cmd_reply_alloc_mem alloc_reply;
struct scst_user_scsi_cmd_reply_exec exec_reply;
};
},
where:
- cmd_h - command handle used to identify the command in the reply.
- subcode - subcommand code, see 4.1
Union contains the subcommand's specific payload:
- result - subcommand's result code
struct scst_user_scsi_cmd_reply_parse
{
uint8_t queue_type;
uint8_t data_direction;
int32_t data_len;
int32_t bufflen;
},
where:
- queue_type - SCSI task attribute (queue type )
- data_direction - command's data flow direction, one of SCST_DATA_* constants
- data_len - command's data length
- bufflen - command's buffer length
struct scst_user_scsi_cmd_reply_alloc_mem
{
uint64_t pbuf;
},
where:
- pbuf - pointer to command's data buffer
struct scst_user_scsi_cmd_reply_exec
{
int32_t resp_data_len;
uint64_t pbuf;
uint8_t reply_type;
uint8_t status;
uint8_t sense_len;
aligned_u64 psense_buffer;
},
where:
- resp_data_len - length of the response data
- pbuf - pointer to command's data buffer. Used only when in the
original SCST_USER_EXEC subcommand pbuf field is 0
- reply_type - could be one of the following constants:
* SCST_EXEC_REPLY_BACKGROUND - tells SCST send to the remote
initiator GOOD status, but the command not yet completed by the
user space handler, it is being executed in the background. When
it will be completed, the user space handler will call
SCST_USER_REPLY_CMD again with reply_type
SCST_EXEC_REPLY_COMPLETED.
* SCST_EXEC_REPLY_COMPLETED - the user space handler completed the command
- status - SAM status of the commands execution
- sense_len - length of sense data in psense_buffer, if any
- psense_buffer - pointed to sense buffer
IV. Commands processing flow example.
As the example consider a simple synchronous VTL, which serves one
virtual SCSI tape device and can process only one command at time from
any initiator.
At the beginning the VTL opens using open() call /dev/scst_user in the
default blocking mode.
Then it using SCST_USER_REGISTER_DEVICE ioctl() function registers the
tape device. Since only one command at time is supported, the allocated
command's data memory could be reused for both READ-type (i.e. which
involve data transfer from target to initiator) and WRITE-type (i.e.
which involve data transfer from initiator to target) commands. So the
device is configured with parse_type SCST_USER_PARSE_STANDARD,
on_free_cmd_type SCST_USER_ON_FREE_CMD_IGNORE, memory_reuse_type
SCST_USER_MEM_REUSE_ALL and partial_transfers_type
SCST_USER_PARTIAL_TRANSFERS_NOT_SUPPORTED.
Then it prepares struct scst_user_get_cmd with reply set to 0, calls
SCST_USER_REPLY_AND_GET_CMD ioctl() and waits until some initiator
connects to its tape device. On that event the VTL receives
SCST_USER_ATTACH_SESS subcommand. Since the VTL doesn't use any
initiator specific data, it can do nothing on that subcommand, so it
prepares scst_user_reply_cmd structure, where:
- cmd_h set to returned by SCST_USER_REPLY_AND_GET_CMD ioctl() cmd_h
- subcode set to SCST_USER_ATTACH_SESS
- result set to 0
Then it prepares struct scst_user_get_cmd with reply set to the prepared
scst_user_reply_cmd structure, calls SCST_USER_REPLY_AND_GET_CMD ioctl()
and waits for some SCSI command arrives from the initiator.
If the received SCSI command is READ-type one, SCST does the necessary
preparations, then the VTL receives SCST_USER_EXEC subcommand, where
bufflen and data_len are set correctly, but memory for buffer isn't
allocated, so pbuf field is 0. The VTL then allocates the data buffer
with size alloc_len, e.g. using malloc(). Then the VTL reads the data
from disk in it, e.g. using O_DIRECT read() function, then prepares
scst_user_reply_cmd structure, where:
- cmd_h set to returned by SCST_USER_REPLY_AND_GET_CMD ioctl() cmd_h
- subcode set to SCST_USER_EXEC
- exec_reply.resp_data_len set to length of the read data
- exec_reply.pbuf set to the data buffer, where the data were read
- exec_reply.reply_type set to SCST_EXEC_REPLY_COMPLETED
- exec_reply.status set to the SAM defined status of the
operation
- exec_reply.sense_len set and exec_reply.psense_buffer filled with
sense data, if necessary
Then it prepares struct scst_user_get_cmd with reply set to the prepared
scst_user_reply_cmd structure, calls SCST_USER_REPLY_AND_GET_CMD ioctl()
and waits for the next SCSI command arrives from the initiator. That's
all for this SCSI command. For the next one the used data buffer will be
reused.
For WRITE-type SCSI commands the processing is the same, but
SCST_USER_ALLOC_MEM will be returned before SCST_USER_EXEC, since the
data transfer from the initiator precedes the commands execution.
In case, if the first command requires 4K data buffer, but the second
one - 1M, for it the VTL also will be asked to allocate the buffer.
Then, if no more 4K commands come for some time, for it
SCST_USER_ON_CACHED_MEM_FREE subcommand will be returned to the VTL in
order to ask it to free that buffer.
Vladislav Bolkhovitin

View File

@@ -1,28 +0,0 @@
<!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"> </a>
<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
released versions</a><br>
</p>
<hr style="width: 100%; height: 1px;">
<p><a href="main.html">Main</a>&nbsp;<a href="index.html">Index</a> <br>
</p>
</body>
</html>

75
www/scstvsstgt.html Normal file
View File

@@ -0,0 +1,75 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li id="current"><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="main">
<h1>SCST vs STGT</h1>
<p><strong><a href="http://stgt.berlios.de/">STGT</a></strong> is alternative, independent from SCST implementation
of SCSI target framework for Linux. It has different architecture, where SCSI target state machine is placed in
the user space, while in SCST all the processing done in the kernel. Such architecture was acknowledged as a
"right" one by the Linux SCSI subsystem maintainers, so kernel's part of STGT quickly found its way to the kernel.
But such architecture has two inherent problems, namely performance and complexity.
See thread <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=472F7FA4.7040303%40wpkg.org&forum_name=scst-devel">
"Relationship between SCST and in-kernel SCSI_TGT"</a> and <a href="http://thread.gmane.org/gmane.linux.scsi/36417/focus=37273">
this</a> message in thread "Open-FCoE on linux-scsi" for more details.</p>
<p>See also the following important discussions:<ul>
<li><span><a href="http://news.gmane.org/find-root.php?message_id=%3c43987F75.2000301%40vlnb.net%3e">
"Stgt a new version of iscsi target?"</a>, especially pay attention to
this message: <a href="http://article.gmane.org/gmane.linux.scsi/21073">
http://article.gmane.org/gmane.linux.scsi/21073</a> for motivation why STGT's architecture was considered "right".
</span></li>
<li><span><a href="http://news.gmane.org/find-root.php?message_id=%3c463F36AC.3010207%40vlnb.net%3e">
"Question for pass-through target design"</a></span></li>
<li><span><a href="http://news.gmane.org/find-root.php?message_id=%3ce2e108260801170127w2937b2afg9bef324efa945e43%40mail.gmail.com%3e">
"Performance of SCST versus STGT"</a> for performance comparison.</span></li>
</ul></p>
<p>Also you shouldn't be deceived by the fact that some (small) part of STGT was accepted in the kernel.<br>
It doesn't mean that STGT has the <strong>"kernel quality"</strong>. In fact, STGT as a whole similarly to any other
out-of-tree project lives on its own, hence has its own quality level, which isn't necessary better, than the
quality level of <strong>SCST</strong>. Actually, from such important aspect of quality as simplicity, it
might be quite contrary: e.g. SCST isn't required to support HIGHMEM (nowadays it
isn't necessary, but required for all in-kernel components), which allowed to simplify memory management a lot.</p>
</div>
</div>
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

76
www/target_fcoe.html Normal file
View File

@@ -0,0 +1,76 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>Open-FCoE software target</h1>
<p><img src="images/t_fcoe.gif" width="100" height="120" class="float-left" />
Open-FCoE is an open source project implementing the Fibre Channel over Ethernet for the Linux operating system.
It uses SCST framework to implement software FC target.
</p><br><br><br><br>
<p class="post-footer align-right">
<a href="http://www.open-fcoe.org/" class="readmore">Open-FCoE Site</a>
</p>
<p><span><table height="300px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
<!-- content-wrap ends here -->
</div>
<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

134
www/target_iscsi.html Normal file
View File

@@ -0,0 +1,134 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>ISCSI target driver iSCSI-SCST</h1>
<p><strong>ISCSI-SCST</strong> is a forked (with all respects) version of <strong>IET</strong> with updates to work
over <strong>SCST</strong> as well as with many improvements and bugfixes. The reason of fork is that the necessary
changes are intrusive and with the current <strong>IET</strong> merge policy, where only simple bugfix-like patches,
which doesn't touch the core code, could be merged, it is very unlikely that they will be merged in the main
<strong>IET</strong> trunk.</p>
<p><strong>ISCSI-SCST</strong> has the following major advantages over the mainline <strong>IET</strong>:
<ul>
<li><span>It uses full power of <strong>SCST core</strong> without loosing any existing feature (except, maybe, illegal
from SCSI specifications point of view MPIO). Namely, you can additionally use with it:
<ul>
<li><span><strong>Pass-through mode with one to many relationship</strong>, i.e. when multiple initiators can connect to the
exported pass-through devices. For instance, you can safely export your parallel
<strong>SCSI tape</strong> or <strong>tape library</strong> on
your iSCSI net and multiple initiators can share it without risk of data loss because of the
shared usage. Existing "rawio" patch for IET supports only non-enforced 1:1
relationship, so it is unsafe to use it in multiple initiators environments.</span></li>
<li><span><strong>More advances devices visibility management</strong>, when different initiators can see different set of
devices with different access permissions from the same target.</span></li>
<li><span><strong>O_DIRECT</strong>, i.e. "<strong>BLOCKIO</strong> on files", mode, which has all advantages
of <strong>BLOCKIO</strong>, but also supports files on file systems. Sometimes, in the appropriate cases,
this mode can make performance difference in 100% or even more.</span></li>
<li><span>With <strong>4KB blocks</strong> you can forget about abysmal write performance caused by misaligned partitions.
All modern OS'es, including Windows starting from, at least, Windows 2000, work perfectly with 4KB block
devices without any additional storage or handling overhead.</span></li>
<li><span><strong>Virtual CD/DVD-ROMs</strong> without necessity for manual patching.</span></li>
<li><span>Ability to create target devices emulators in the <strong>user space</strong>.</span></li>
<li><span>Ability to create <strong>multi-transport SCSI targets</strong>, which can export (possibly, the same)
devices over multiple transports.</span></li>
</ul>
</span></li>
<li><span>It has many code improvements and cleanups, including <strong>stability and iSCSI RFC violations fixes</strong>.
Many IET users use it for ages without problems, so they consider it problemless. But,
in fact, unfortunately, it isn't so.
IET works well only on "fast" paths and regularly used branches, in many other less used
cases IET has various problems, from simply ignoring error processing, as it is with memory
allocations, and crashing itself with BUG() macro, as it is for malformed packets from initiators, to possible data
corruption. See, for instance, <a href="http://communities.vmware.com/thread/53797?tstart=0&start=15">this</a>
thread on a VMware forum about in which <strong>Russian roulette</strong> IET users play using it with VMware.
ChangeLog file lists most noticeable fixes, but there were a lot of many other smaller ones.</span></li>
<li><span>Due to reworked I/O architecture and <strong>SCST</strong> backend <strong>iSCSI-SCST</strong> has
better performance in many cases. In future with upcoming improvements in <strong>SCST core</strong>, like zero-copy
with Linux cache <strong>FILEIO</strong>, the performance difference is going to be even bigger. Currently in
tests from a single initiator over a single connection on 1GbE hardware over <strong>FILEIO</strong> vdisk
<strong>iSCSI-SCST</strong> with default settings usually outperforms tuned for best
performance <strong>IET</strong> a on <strong>3-30%</strong>. The difference is especially noticeably with real storage,
not NULLIO or RAM disks.
On 10GbE hardware the performance difference is often as high as <strong>100-200%</strong> or even more.
With higher number of initiators the difference will be even bigger. This is because
<strong>iSCSI-SCST</strong> has less commands processing overhead per command, hence has smaller processing
latency and puts less load on CPU.
</ul></p>
<p>Also, in contrast to <strong>IET, iSCSI-SCST</strong> is open for any new development, modifications and
improvements, so people who want to fix or implement something new will not have to keep and maintain separate
patches as it is currently necessary with <strong>IET</strong>. <strong>ISCSI-SCST</strong> is actively
developed and going to gain in the future new features like support for multiple connections per session, error recovery
levels >0, etc., which eventually make it really <i>"Enterprise"</i>.</p>
<p>If you are an IET user before installation carefully read README files of both iSCSI-SCST and
the SCST core. Especially pay attention that now the LUN information for iSCSI-SCST is configured not using
iscsi-scstd.conf file in /etc, but using corresponding SCST facilities. This is because now the responsibilities
are divided (as it should be) between the target driver (iSCSI-SCST) and the SCST core: target driver is
responsible for handling targets and their parameters, SCST core is responsible for handling backstorage.</p>
<p class="post-footer align-right">
<a href="http://iscsitarget.sourceforge.net/" class="readmore">IET WebPage</a>
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
</p>
</div>
</div>
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

77
www/target_lsi.html Normal file
View File

@@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>Target driver LSI/MPT cards</h1>
<p><img src="images/t_lsi.gif" width="100" height="120" class="float-left" />
Target driver LSI/MPT cards was originally developed by Hu Gang, then Erik Habbinga has continued the development.
It supports parallel SCSI (SPI), but also should work with SAS and Fibre Channel transports. This driver is on the
alpha stage and available for download from the SCST SVN repository. See the download page how to setup access to it.
</p><br><br><br>
<p class="post-footer align-right">
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
</p>
<p><span><table height="300px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
<!-- content-wrap ends here -->
</div>
<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

102
www/target_old.html Normal file
View File

@@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>Old target driver for QLogic 22xx/23xx cards for 2.4 kernels</h1>
<p><img src="images/t_unsupported.gif" width="100" height="120" class="float-left" />
Old target driver for QLogic 22xx/23xx 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.</p>
<p>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.</p>
<p>Currently it is <strong>not supported</strong> and listed here for historical reasons only.</p>
<h1>Target drivers for Adaptec 7xxx and QLogic QLA12xx cards</h1>
<p><img src="images/t_unsupported.gif" width="100" height="120" class="float-left" />
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/~hugang/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 <strong>Hu Gang <hugang@soulinfo.com></strong>. If some of these drivers don't compile for
you, try again with SCST version 0.9.3-pre2.</p><br><br>
<h1>Patches for UNH-iSCSI Target 1.5.03 and 1.6.00 to SCST</h1>
<p><img src="images/t_unsupported.gif" width="100" height="120" class="float-left" />
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.</p>
<p>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.</p>
<p>Requires Linux kernel versions 2.4.20 or higher or 2.6.7 or higher and SCST version 0.9.2 or higher.</p>
<p>Currently it is <strong>not supported</strong> and listed here for historical reasons only.</p>
<!-- content-wrap ends here -->
</div>
<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

View File

@@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>Target driver for QLogic 22xx/23xx cards</h1>
<p><img src="images/t_qlogic.gif" width="100" height="120" class="float-left" />
This is target driver for QLogic 22xx/23xx Fibre Channel cards. It is stable and well tested.</p>
<p>The latest version is 0.9.5. Requires Linux kernel version 2.6.16.x or higher and SCST version 0.9.5.
Tested mostly on i386 and x86_64, but should work on any other supported by Linux platform.</p>
<p>You can find the latest development version of this driver in the SCST SVN. See the download page how to setup
access to it.</p>
<p class="post-footer align-right">
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471&package_id=179019" class="readmore">Download</a>
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
</p>
<p><span><table height="300px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
<!-- content-wrap ends here -->
</div>
<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

83
www/target_qla_isp.html Normal file
View File

@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>Target driver for QLogic ISP chipsets</h1>
<p><img src="images/t_qlogic.gif" width="100" height="120" class="float-left" />
This is an SCST driver for ISP QLogic chipsets commonly used in many SCSI and FC host bus adapters.
It is based on Matthew Jacob's multiplatform driver for ISP chipsets, which has its own page at
<a href="http://www.feral.com/isp.html">http://www.feral.com/isp.html</a>. The update for SCST was made by
Stanislaw Gruszka for Open-E Inc.</p>
<p>Driver operates on the same hardware as the qla2x00 target driver, but has one notable
advantage over it: <strong>support of 24xx series of QLogic adapters</strong>.</p>
<p>This driver is in beta stages. You may want to use it in production, but you need to test it for your hardware
configuration. It is available for download from the SCST SVN repository. See the download page how to setup access
to it.</p>
<p class="post-footer align-right">
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
</p>
<p><span><table height="250px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
<!-- content-wrap ends here -->
</div>
<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

77
www/target_srp.html Normal file
View File

@@ -0,0 +1,77 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>Infiniband SCSI RDMA protocol (SRP) target driver</h1>
<p><img src="images/t_rdma.gif" width="100" height="120" class="float-left" />
SCSI RDMA Protocol (SRP) target driver is developed independently from SCST team. You can find instructions how to
download and install it on its wiki page. Since March 2008 its main development place is SCST SVN repository.
</p><br><br><br>
<p class="post-footer align-right">
<a href="http://scst.svn.sourceforge.net/" class="readmore">SCST SVN Repository</a>
<a href="https://wiki.openfabrics.org/tiki-index.php?page=SRPT+Installation" class="readmore">RDMA Wiki</a>
</p>
<p><span><table height="300px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
<!-- content-wrap ends here -->
</div>
<!-- wrap ends here -->
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>

View File

@@ -1,182 +1,78 @@
<!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>
<h1><small><a name="iscsi-scst"></a>ISCSI target driver iSCSI-SCST<br>
</small></h1>
<div style="text-align: justify;">
<p>ISCSI-SCST is a forked (with all respects) version of <a
href="http://iscsitarget.sourceforge.net/">IET</a> with
updates to work over SCST as well as with many improvements and
bugfixes. The reason of fork is that the necessary changes are
intrusive and with the current IET merge policy, where only simple
bugfix-like patches, which doesn't touch the core code, could be
merged, it is very unlikely that they will be merged in the main IET
trunk.<br>
</p>
<p>ISCSI-SCST has the following major advantages over the mainline IET:<br>
</p>
<ul>
<li>It uses full SCST power without loosing any existing feature
(except, maybe, "illegal" from SCSI specifications point of view MPIO).
Namely, you can use with it:</li>
</ul>
<ul style="list-style-type: circle; margin-left: 40px;">
<li>Pass-through mode with one to many relationship, i.e. when
multiple initiators can connect to the exported pass-through devices.
For instance, you can safely export your parallel SCSI
tape or tape library on your iSCSI net and multiple initiators can
share it without risk of data loss because of the shared usage.
Existing "rawio" patch for IET supports only non-enforced 1:1
relationship, so it is unsafe to use it in multiple initiators
environments.<br>
</li>
<li>More advances devices visibility management, when different
initiators can see different set of devices with different access
permissions from the same target.</li>
<li>O_DIRECT, i.e. "BLOCKIO on files", mode, which has all advantages
of BLOCKIO, but also supports files on file systems. Sometimes, in the
appropriate cases, this mode can make performance difference in 100% or
even more.</li>
<li>With 4KB blocks you can forget about abysmal write performance
caused by misaligned partitions. All modern OS'es, including Windows
starting from, at least, Windows 2000, work perfectly with 4KB block
devices without any additional storage or handling overhead.</li>
<li>Virtual CD/DVD-ROMs without necessity for manual patching.</li>
<li>Ability to create target devices emulators in the user space.</li>
<li>Ability to create multi-transport SCSI targets, which can export
(possibly, the same) devices over multiple transports.</li>
</ul>
<ul>
<li>It has many code improvements and cleanups, including stability
and iSCSI RFC violations fixes. If you are an IET user and consider IET
problemless, I'm sorry for the bad news. IET works well only on "fast"
paths and regularly used branches, in many other less used cases IET
has various problems, from simply ignoring error processing, as it is
with memory allocations, to crashing itself with BUG() macro, as it is
for malformed packets from initiators. ChangeLog file lists most
noticeable fixes, but there were a lot of many other smaller ones.</li>
</ul>
<ul>
<li>Due to its reworked IO architecture and SCST backend iSCSI-SCST
has better performance in many cases. In future with upcoming SCST
improvements, like zero-copy with Linux cache FILEIO, the performance
difference is going to be even bigger. Currently in tests from a single
initiator over a single connection on 1GbE hardware over FILEIO vdisk
iSCSI-SCST with default settings usually outperforms tuned IET a on
3-10% (by default IET has not too good settings, so it shows
considerably worse results) or has the similar performance. The bigger
difference is expected with 10GbE hardware or with higher number of
initiators, since iSCSI-SCST has less commands processing overhead per
command, hence has smaller processing latency and puts less load on
CPU. If you find a case where
iSCSI-SCST has worse performance, than IET, please report it to SCST
mailing list, it will be greatly
appreciated.</li>
</ul>
<p>Also, in contrast to IET, iSCSI-SCST is open for any new
development, modifications and improvements, so people who want to fix
or implement something new will not have to keep and maintain separate
patches as it is currently necessary with IET. ISCSI-SCST is going to
be actively developed and gain in the future new features like support
for multiple connections per session, error recovery levels &gt;0,
etc., which eventually make it really "enterprise".<br>
</p>
<p>ISCSI-SCST is available for download from the <a
href="http://scst.svn.sourceforge.net/">SCST SVN repository</a>. See
the&nbsp;<a href="main.html">main page</a> how to setup access to it.<br>
</p>
<p>If you are an IET user before installation carefully read
README files of both iSCSI-SCST and the SCST core. Especially pay
attention that now the LUN information for iSCSI-SCST is configured not
using iscsi-scstd.conf file in /etc, but using corresponding SCST
facilities. This is because now the responsibilities are divided (as it
should be) between the target driver (iSCSI-SCST) and the SCST core:
target driver is responsible for handling targets and their
parameters, SCST core is responsible for handling backstorage.<br>
</p>
</div>
<hr
style="width: 100%; height: 2px; margin-left: 0px; margin-right: 0px;">
<h1><small><a name="qla2x00"></a>Target driver for QLogic 22xx/23xx
cards<br>
</small></h1>
<div style="text-align: justify;">
<p>This is target driver for QLogic 22xx/23xx Fibre Channel cards, but
24xx and later cards are not supported by it.<br>
</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 the&nbsp;<a href="main.html">main
page</a> how to setup access to it.
</p>
<p style="text-align: justify;"><a
href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download
released versions</a><br>
<a href="ChangeLog.qla26">Change Log</a><br>
</p>
</div>
<hr style="width: 100%; height: 2px;">
<h1><small><a name="qla_isp"></a>Target driver for QLogic ISP chipsets<br>
</small></h1>
This is an SCST driver for ISP QLogic chipsets commonly used in many
SCSI and FC host bus adapters. It is based on Matthew Jacob's
multiplatform driver for ISP chipsets, which has its own page at&nbsp;<a
href="http://www.feral.com/isp.html">http://www.feral.com/isp.html</a>.
The update for SCST was made by Stanislaw Gruszka for Open-E Inc.<br>
<br>
Driver operates on the same hardware as the above target driver for
QLogic 22xx/23xx cards, but has one notable advantage over it: support
of 24xx series of QLogic adapters.<br>
<br>
This driver is in beta stages. You may want to use it in production,
but you need to test it for your hardware configuration. It is
available for download from the <a
href="http://scst.svn.sourceforge.net/">SCST SVN repository</a>. See
the <a href="main.html">main page</a> how to setup access to it.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small><a name="srpt"></a>Infiniband 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 its <a
href="https://wiki.openfabrics.org/tiki-index.php?page=SRPT+Installation">wiki
page</a>. Since March 2008 its main development place is <a
href="http://scst.svn.sourceforge.net/">SCST SVN repository</a>.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small><a name="fcoe"></a>Open-FCoE software target<br>
</small></h1>
<a href="http://www.open-fcoe.org/">Open-FCoE</a> is an open source
project implementing the Fibre Channel over Ethernet for the Linux
operating system. It uses SCST framework to implement software FC
target.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small><a name="lsi"></a>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. It supports parallel SCSI
(SPI), but also should work with SAS and Fibre Channel transports. This
driver is
on the
alpha stage and available for download from the <a
href="http://scst.svn.sourceforge.net/">SCST SVN repository</a>. See
the&nbsp;<a href="main.html">main page</a> how to setup access to it.<br>
<br>
<hr style="width: 100%; height: 2px;"><a href="main.html">Main</a>&nbsp;<a
href="index.html">Index</a>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta name="Keywords" content="Generic SCSI Target Middle Level for Linux" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Daniel Fernandes"/>
<meta name="Robots" content="index,follow" />
<link rel="stylesheet" href="images/Orange.css" type="text/css" />
<title>SCST: Generic SCSI Target Middle Level for Linux</title>
</head>
<body>
<!-- wrap starts here -->
<div id="wrap">
<div id="header">
<div class="logoimg"></div><h1 id="logo"><span class="orange"></span></h1>
<h2 id="slogan">SCSI Target Middle Level for Linux</h2>
</div>
<div id="menu">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="http://www.sourceforge.net/projects/scst">Main</a></li>
<li id="current"><a href="targets.html">Drivers</a></li>
<li><a href="downloads.html">Downloads</a></li>
<li><a href="scstvsstgt.html">SCST vs STGT</a></li>
</ul>
</div>
<!-- content-wrap starts here -->
<div id="content-wrap">
<div id="sidebar">
<h1>Target Drivers</h1>
<ul class="sidemenu">
<li><a href="target_iscsi.html">iSCSI-SCST</a></li>
<li><a href="target_qla22xx_23xx.html">QLogic FC 22xx/23xx</a></li>
<li><a href="target_qla_isp.html">QLogic FC ISP</a></li>
<li><a href="target_srp.html">SCSI RDMA Protocol(SRP)</a></li>
<li><a href="target_lsi.html">LSI/MPT cards</a></li>
<li><a href="target_fcoe.html">Open-FCoE Target SW</a></li>
<li><a href="target_old.html">Old Unsupported</a></li>
</ul>
<h1>SCST Admin</h1>
<ul class="sidemenu">
<li><a href="scst_admin.html">SCST Admin Utility</a></li>
</ul>
</div>
<div id="main">
<h1>SCST Target Drivers</h1>
<p>SCST has target drivers for:
<ul>
<li><span>Software iSCSI</span></li>
<li><span>Fibre Channel QLogic 22xx/23xx series</span></li>
<li><span>Fibre Channel QLogic ISP Chipsets, including 24xx</span></li>
<li><span>Infiniband SCSI RDMA Protocol (SRP)</span></li>
<li><span>LSI/MPT SCSI</span></li>
<li><span>...</span></li>
</ul>
</p>
<p><span><table height="300px" border=0><tr><td>&nbsp;</td></tr></table></span></p>
</div>
</div>
</div>
<!-- footer starts here -->
<div id="footer">
<p>
&copy; Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>&nbsp;&nbsp;
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</p>
</div>
<!-- footer ends here -->
</body>
</html>