New web look
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@421 d57e44dd-8a1f-0410-8b47-8ef2f437770f
87
www/downloads.html
Normal 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>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
325
www/images/Orange.css
Normal 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
|
After Width: | Height: | Size: 87 B |
BIN
www/images/clock.gif
Normal file
|
After Width: | Height: | Size: 272 B |
BIN
www/images/comment.gif
Normal file
|
After Width: | Height: | Size: 364 B |
BIN
www/images/fig1.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
www/images/fig2.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
www/images/fig3.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
www/images/fig4.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
www/images/footerbg.gif
Normal file
|
After Width: | Height: | Size: 106 B |
BIN
www/images/headerbg-orange.gif
Normal file
|
After Width: | Height: | Size: 503 B |
BIN
www/images/headerbg.gif
Normal file
|
After Width: | Height: | Size: 500 B |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
BIN
www/images/logo.gif
Executable file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
www/images/menubg.gif
Normal file
|
After Width: | Height: | Size: 46 B |
BIN
www/images/menubg_current.gif
Normal file
|
After Width: | Height: | Size: 46 B |
BIN
www/images/menudivide.gif
Normal file
|
After Width: | Height: | Size: 821 B |
BIN
www/images/page.gif
Normal file
|
After Width: | Height: | Size: 393 B |
BIN
www/images/quote.gif
Normal file
|
After Width: | Height: | Size: 346 B |
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 303 KiB After Width: | Height: | Size: 303 KiB |
BIN
www/images/square_arrow.gif
Normal file
|
After Width: | Height: | Size: 488 B |
BIN
www/images/t_fcoe.gif
Executable file
|
After Width: | Height: | Size: 6.1 KiB |
BIN
www/images/t_lsi.gif
Executable file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
www/images/t_qlogic.gif
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
www/images/t_rdma.gif
Executable file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
www/images/t_unsupported.gif
Executable file
|
After Width: | Height: | Size: 6.2 KiB |
161
www/index.html
@@ -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&type=2" alt="SourceForge.net Logo" border="0">
|
||||
</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
200
www/main.html
@@ -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 <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 <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> 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>
|
||||
@@ -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&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>
|
||||
@@ -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
|
||||
<hugang
|
||||
% soulinfo.com>. 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> <a
|
||||
href="index.html">Index</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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&forum_name=scst-devel">http://sourceforge.net/mailarchive/forum.php?thread_name=472F7FA4.7040303%40wpkg.org&forum_name=scst-devel</a>
|
||||
and this message: <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> <a
|
||||
href="index.html">Index</a><br>
|
||||
<br>
|
||||
</body>
|
||||
</html>
|
||||
79
www/scst_admin.html
Normal 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> </td></tr></table></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
1101
www/scst_pg.html
Normal file
4828
www/scst_pg.pdf
Normal file
876
www/scst_user_spec.txt
Normal 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
|
||||
@@ -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> <a href="index.html">Index</a> <br>
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
75
www/scstvsstgt.html
Normal 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>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
76
www/target_fcoe.html
Normal 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> </td></tr></table></span></p>
|
||||
</div>
|
||||
<!-- content-wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- wrap ends here -->
|
||||
</div>
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
134
www/target_iscsi.html
Normal 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>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
77
www/target_lsi.html
Normal 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> </td></tr></table></span></p>
|
||||
</div>
|
||||
<!-- content-wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- wrap ends here -->
|
||||
</div>
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
102
www/target_old.html
Normal 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>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
80
www/target_qla22xx_23xx.html
Normal 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> </td></tr></table></span></p>
|
||||
</div>
|
||||
<!-- content-wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
83
www/target_qla_isp.html
Normal 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> </td></tr></table></span></p>
|
||||
</div>
|
||||
<!-- content-wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
77
www/target_srp.html
Normal 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> </td></tr></table></span></p>
|
||||
</div>
|
||||
<!-- content-wrap ends here -->
|
||||
</div>
|
||||
|
||||
<!-- wrap ends here -->
|
||||
</div>
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
260
www/targets.html
@@ -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 >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 <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 <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 <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 <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> <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> </td></tr></table></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- footer starts here -->
|
||||
<div id="footer">
|
||||
<p>
|
||||
© Copyright 2008 <strong>SCST (SCSI Target Middle Level for Linux)</strong>
|
||||
Design by: <b><font color="#EC981F">Daniel Fernandes</font></b>
|
||||
|
||||
</p>
|
||||
</div>
|
||||
<!-- footer ends here -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||