mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-01 04:46:15 +00:00
svn+ssh://yanb123@svn.code.sf.net/p/scst/svn/trunk
........
r5322 | vlnb | 2014-03-05 05:27:21 +0200 (Wed, 05 Mar 2014) | 13 lines
scst_vdisk: Make vdisk_nullio size configurable
Keep the default size of vdisk_nullio devices at VDISK_NULLIO_SIZE. Add
a sysfs attribute 'size' which is the size of a vdisk device in
bytes. Make the size of vdisk_nullio devices configurable. Accept
"size" and "size_mb" as creation parameters for vdisk_nullio
devices. Generate a CAPACITY DATA HAS CHANGED unit attention after size
changes. Refuse any attempt to change the size into a number that is
not a multiple of the block size.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5323 | bvassche | 2014-03-06 09:29:00 +0200 (Thu, 06 Mar 2014) | 1 line
scst_vdisk: Avoid that smatch complains about unreachable code
........
r5324 | vlnb | 2014-03-07 06:02:39 +0200 (Fri, 07 Mar 2014) | 27 lines
PERSISTENT RESERVE IN: Suppress a kernel warning for small output buffer sizes
This patch suppresses the following error message and kernel warning:
scst: ***ERROR***: Too big response data len 24 (max 8), limiting it to the max (dev iis)
Call Trace:
[<ffffffff818b1193>] ? dump_stack+0x41/0x56
[<ffffffffa01c1a8f>] ? scst_set_resp_data_len+0x82/0xb1 [scst]
[<ffffffffa01ca80f>] ? scst_pr_read_reservation+0xbf/0xc4 [scst]
[<ffffffffa01b707b>] ? scst_persistent_reserve_in_local+0x140/0x1ce [scst]
[<ffffffffa01b7cee>] ? scst_exec_check_blocking+0x57/0xf1 [scst]
[<ffffffffa01b85f4>] ? scst_process_active_cmd+0x86c/0x136f [scst]
[<ffffffffa01b913c>] ? scst_do_job_active+0x45/0x5b [scst]
[<ffffffffa01b939c>] ? scst_cmd_thread+0x218/0x2b7 [scst]
[<ffffffff8105292a>] ? wake_up_bit+0x23/0x23
[<ffffffffa01b9184>] ? scst_cmd_tasklet+0x32/0x32 [scst]
[<ffffffff81052355>] ? kthread_freezable_should_stop+0x51/0x51
[<ffffffffa01b9184>] ? scst_cmd_tasklet+0x32/0x32 [scst]
[<ffffffff81052400>] ? kthread+0xab/0xb3
[<ffffffff81052355>] ? kthread_freezable_should_stop+0x51/0x51
[<ffffffff818b4e3c>] ? ret_from_fork+0x7c/0xb0
[<ffffffff81052355>] ? kthread_freezable_should_stop+0x51/0x51
Reported-by: Roman Bogdanov <bogdanovr@gmail.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5325 | bvassche | 2014-03-08 15:30:29 +0200 (Sat, 08 Mar 2014) | 1 line
nightly build: Update kernel versions
........
r5326 | vlnb | 2014-03-13 05:50:37 +0200 (Thu, 13 Mar 2014) | 3 lines
Update link to Gentoo HOWTO from Jurie Botha
........
r5329 | vlnb | 2014-03-15 03:38:06 +0200 (Sat, 15 Mar 2014) | 3 lines
Cleanup
........
r5330 | vlnb | 2014-03-15 03:38:37 +0200 (Sat, 15 Mar 2014) | 3 lines
Implement REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS command
........
r5331 | vlnb | 2014-03-15 03:40:57 +0200 (Sat, 15 Mar 2014) | 8 lines
scst_vdisk: Remove an unused parameter from vdisk_fsync*()
The "struct vdisk_cmd_params *p" parameter is neither used by vdisk_fsync(),
vdisk_fsync_blockio() nor by vdisk_fsync_fileio() so remove it.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5332 | vlnb | 2014-03-15 03:42:06 +0200 (Sat, 15 Mar 2014) | 8 lines
vdisk_blockio: Change default vendor name back to "SCST_BIO"
In r5316 the default vendor name for vdisk_blockio devices was changed
into "SCST_FIO". Change this back into "SCST_BIO".
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5333 | vlnb | 2014-03-15 03:44:35 +0200 (Sat, 15 Mar 2014) | 8 lines
vdisk_blockio: Add VERIFY implementation
There is already an implementation of the VERIFY command for vdisk_fileio
devices. Add an implementation for vdisk_blockio devices.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5334 | vlnb | 2014-03-15 04:01:17 +0200 (Sat, 15 Mar 2014) | 8 lines
scst_vdisk: Implement COMPARE AND WRITE
Ensure that COMPARE AND WRITE is executed atomically by serializing
all COMPARE AND WRITE commands per device (SCST_SERIALIZED).
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5335 | vlnb | 2014-03-15 04:09:17 +0200 (Sat, 15 Mar 2014) | 5 lines
Fix URL to SCST website
Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
........
r5336 | vlnb | 2014-03-15 04:13:58 +0200 (Sat, 15 Mar 2014) | 3 lines
Cleanup
........
r5337 | bvassche | 2014-03-15 08:47:26 +0200 (Sat, 15 Mar 2014) | 1 line
scripts/kernel-functions: Kernel 3.13.6 build fix
........
r5338 | bvassche | 2014-03-16 15:38:50 +0200 (Sun, 16 Mar 2014) | 1 line
srpt: Minor buid process terminology change
........
r5339 | bvassche | 2014-03-18 17:35:13 +0200 (Tue, 18 Mar 2014) | 1 line
ib_srpt: Avoid that session logout hangs sporadically
........
r5340 | vlnb | 2014-03-19 06:28:46 +0200 (Wed, 19 Mar 2014) | 8 lines
scst/README: Show how to read SCST sysfs attributes
Make the behavior of SCST sysfs attributes more clear by adding
examples in scst/README of code for reading and writing these attributes.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5344 | bvassche | 2014-03-20 17:13:50 +0200 (Thu, 20 Mar 2014) | 1 line
ib_srpt: Simplify srpt_handle_cmd()
........
r5345 | bvassche | 2014-03-20 17:14:45 +0200 (Thu, 20 Mar 2014) | 5 lines
ib_srpt: Micro-optimize I/O context state manipulation
All ioctx->state manipulations are serialized per command so it is
not necessary to use locking to protect these manipulations.
........
r5346 | bvassche | 2014-03-20 17:15:54 +0200 (Thu, 20 Mar 2014) | 8 lines
ib_srpt: Handle GID change events properly
The mlx4_core driver generates a GID change event after a port has been
changed from IB into Ethernet mode. Avoid that this causes the following
error message to appear in the system log:
ib_srpt: ***ERROR***: received unrecognized IB event 18
........
r5347 | bvassche | 2014-03-20 17:16:27 +0200 (Thu, 20 Mar 2014) | 1 line
ib_srpt/Makefile: Add kerneldoc target
........
r5348 | bvassche | 2014-03-20 17:17:04 +0200 (Thu, 20 Mar 2014) | 1 line
ib_srpt: Fix an error reported by the kerneldoc tool
........
r5349 | bvassche | 2014-03-20 17:18:06 +0200 (Thu, 20 Mar 2014) | 5 lines
ib_srpt: Avoid that cmd_wait_list processing triggers command reordering
Although harmless for SCSI commands with SIMPLE ordering, avoid that commands
received before RTU can get reordered.
........
r5350 | bvassche | 2014-03-20 17:18:38 +0200 (Thu, 20 Mar 2014) | 2 lines
ib_srpt: Micro-optimize SRP_CMD parsing
........
r5351 | bvassche | 2014-03-20 17:19:05 +0200 (Thu, 20 Mar 2014) | 1 line
ib_srpt: Sync information unit memory only once
........
r5352 | bvassche | 2014-03-20 17:19:34 +0200 (Thu, 20 Mar 2014) | 2 lines
ib_srpt: Introduce a temporary variable in srpt_handle_new_iu()
........
r5353 | bvassche | 2014-03-20 17:20:55 +0200 (Thu, 20 Mar 2014) | 2 lines
ib_srpt: Micro-optimize polling
........
r5354 | bvassche | 2014-03-20 17:22:19 +0200 (Thu, 20 Mar 2014) | 5 lines
ib_srpt: Rework multi-channel support
Store initiator and target port ID's once per nexus instead of in each
channel data structure.
........
r5355 | bvassche | 2014-03-20 17:23:16 +0200 (Thu, 20 Mar 2014) | 2 lines
ib_srpt: Simplify channel state management code
........
r5356 | bvassche | 2014-03-20 17:24:18 +0200 (Thu, 20 Mar 2014) | 5 lines
ib_srpt: Defer destroying the QP until the TimeWait state has been left
This is necessary to avoid that a login gets rejected due to reusing a
queue pair number that has not yet been freed by the target side.
........
r5357 | bvassche | 2014-03-20 17:25:34 +0200 (Thu, 20 Mar 2014) | 5 lines
ib_srpt: Rework waiting for last WQE
After having changed the queue pair state into "error", queue an additional
work request instead of waiting for the last WQE event.
........
r5358 | bvassche | 2014-03-20 17:26:48 +0200 (Thu, 20 Mar 2014) | 1 line
srpt/session-management.txt: Document how sessions are managed by the ib_srpt driver
........
r5359 | bvassche | 2014-03-20 18:10:19 +0200 (Thu, 20 Mar 2014) | 1 line
scst_const.h: Make COMPARE_AND_WRITE definition available for kernel versions 3.6..3.11
........
r5360 | vlnb | 2014-03-21 03:58:13 +0200 (Fri, 21 Mar 2014) | 3 lines
In VERIFY commands BYTCHK 1x is not supported (yet)
........
r5361 | bvassche | 2014-03-21 18:29:26 +0200 (Fri, 21 Mar 2014) | 1 line
srpt/Makefile: Avoid that the build process depends on source control tools
........
r5362 | vlnb | 2014-03-22 01:12:42 +0200 (Sat, 22 Mar 2014) | 3 lines
Fix error recovery of internal commands
........
r5363 | bvassche | 2014-03-24 13:53:00 +0200 (Mon, 24 Mar 2014) | 1 line
ib_srpt: Clarify a kernel-doc comment
........
r5364 | bvassche | 2014-03-24 13:55:56 +0200 (Mon, 24 Mar 2014) | 1 line
ib_srpt: Add newline at the end of kernel warning statements
........
r5365 | bvassche | 2014-03-24 13:57:39 +0200 (Mon, 24 Mar 2014) | 5 lines
ib_srpt: Change the severity level of a log message
Make sure that target port state changes get logged even with
debugging disabled.
........
r5366 | bvassche | 2014-03-24 13:59:27 +0200 (Mon, 24 Mar 2014) | 5 lines
ib_srpt: Clean up srpt_destroy_ch_ib()
All callers guarantee that the completion queue is empty so it is
not necessary to invoke ib_poll_cq() from inside this function.
........
r5367 | bvassche | 2014-03-24 14:01:07 +0200 (Mon, 24 Mar 2014) | 5 lines
ib_srpt: Micro-optimize srpt_adjust_srq_wr_avail()
The overhead of atomic_add_return() is lower than that of a
spin_lock() / spin_unlock() pair, hence switch to the former.
........
r5368 | bvassche | 2014-03-24 14:03:09 +0200 (Mon, 24 Mar 2014) | 20 lines
ib_srpt: Fix a kernel warning
Avoid that the following (very rare) kernel warning is reported
when an ib_srpt target port is disabled while I/O is ongoing:
WARNING: CPU: 3 PID: 12259 at srpt/src/ib_srpt.c:3334 srpt_xmit_response+0x165/0x300 [ib_srpt]()
Unexpected command state 6
Call Trace:
[<ffffffff814a15dc>] dump_stack+0x4e/0x7a
[<ffffffff8104bc5d>] warn_slowpath_common+0x7d/0xa0
[<ffffffff8104bccc>] warn_slowpath_fmt+0x4c/0x50
[<ffffffffa0771525>] srpt_xmit_response+0x165/0x300 [ib_srpt]
[<ffffffffa082aacc>] scst_xmit_response+0xbc/0x560 [scst]
[<ffffffffa083123d>] scst_process_active_cmd+0x29d/0x7b0 [scst]
[<ffffffffa0832bd9>] scst_do_job_active+0x89/0x1a0 [scst]
[<ffffffffa0832e4f>] scst_cmd_thread+0x15f/0x350 [scst]
[<ffffffff810766cd>] kthread+0xed/0x110
[<ffffffff814b312c>] ret_from_fork+0x7c/0xb0
---[ end trace 591f7af7d006fc0e ]---
........
r5369 | bvassche | 2014-03-24 14:04:44 +0200 (Mon, 24 Mar 2014) | 5 lines
ib_srpt: Add a kernel warning
Invoking srpt_zerolength_write() before the queue pair has reached
the error state is a bug, so complain loudly if that happens.
........
r5370 | bvassche | 2014-03-24 14:07:43 +0200 (Mon, 24 Mar 2014) | 7 lines
ib_srpt: Avoid waiting for missing error completions
Apparently with mlx4 firmware up to and including 2.30.8000 it is not
guaranteed that for a QP associated with an SRQ error completions are
generated for all pending work requests. Avoid triggering
srpt_pending_cmd_timeout() for missing error completions.
........
r5371 | bvassche | 2014-03-25 18:19:00 +0200 (Tue, 25 Mar 2014) | 1 line
nightly build: Update kernel versions
........
r5382 | vlnb | 2014-03-26 04:31:52 +0200 (Wed, 26 Mar 2014) | 6 lines
Black hole functionality added
Scst_mutex intentially used directly in the sysfs handler, because
comming sysfs improvements will allow that.
........
r5383 | vlnb | 2014-03-26 05:18:03 +0200 (Wed, 26 Mar 2014) | 5 lines
documentation: Document SCST_SERIALIZED and SCST_STRICTLY_SERIALIZED
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5384 | vlnb | 2014-03-26 05:18:36 +0200 (Wed, 26 Mar 2014) | 3 lines
Cleanup
........
r5385 | vlnb | 2014-03-26 05:20:04 +0200 (Wed, 26 Mar 2014) | 9 lines
scst_local: Remove two superfluous tests
The to_scst_lcl_sess() macro is based on container_of() and hence never
returns NULL. Hence remove the two tests that compare the result of that
macro against NULL.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5386 | vlnb | 2014-03-26 05:21:25 +0200 (Wed, 26 Mar 2014) | 7 lines
iscsi-scst: Introduce ARRAY_SIZE()
This patch does not change any functionality.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5387 | vlnb | 2014-03-26 05:22:16 +0200 (Wed, 26 Mar 2014) | 8 lines
scst: Clarify a comment
The comment above scst_nexus_loss() is somewhat confusing so change
it into something that is more clear.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5388 | vlnb | 2014-03-26 05:23:57 +0200 (Wed, 26 Mar 2014) | 9 lines
scst_vdisk: Fix READ CAPACITY(10)
SBC-2 defines the LBA as a 32-bit field that starts at offset 2 and
not as a 64-bit field.
Reported-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
r5389 | bvassche | 2014-03-26 13:56:13 +0200 (Wed, 26 Mar 2014) | 4 lines
ib_srpt: Clean up srpt_handle_rdma_comp()
This patch does not change any functionality.
........
r5390 | bvassche | 2014-03-26 13:56:59 +0200 (Wed, 26 Mar 2014) | 4 lines
ib_srpt: Clean up srpt_handle_send_err_comp()
This patch does not change any functionality.
........
r5391 | bvassche | 2014-03-26 13:58:25 +0200 (Wed, 26 Mar 2014) | 4 lines
ib_srpt: Clean up srpt_handle_rdma_err_comp()
This patch does not change any functionality.
........
r5392 | bvassche | 2014-03-26 13:59:37 +0200 (Wed, 26 Mar 2014) | 5 lines
ib_srpt: Suppress superfluous error messages
Only complain about a missing completion for I/O contexts that are
in a state where the ib_srpt driver is waiting for the HCA.
........
r5393 | bvassche | 2014-03-26 14:00:43 +0200 (Wed, 26 Mar 2014) | 5 lines
ib_srpt: Make srpt_abort_cmd() state checks more strict
Complain if srpt_abort_cmd() is called for an I/O context that is
being processed by SCST and not by the HCA.
........
r5394 | vlnb | 2014-03-27 00:16:16 +0200 (Thu, 27 Mar 2014) | 3 lines
Cosmetics
........
r5395 | vlnb | 2014-03-27 01:51:36 +0200 (Thu, 27 Mar 2014) | 3 lines
Reimplement dropping of TM requests in a more reliable manner
........
r5396 | vlnb | 2014-03-27 03:57:08 +0200 (Thu, 27 Mar 2014) | 3 lines
Possibility to specify SCSI target device name added
........
r5397 | bvassche | 2014-03-27 10:27:45 +0200 (Thu, 27 Mar 2014) | 6 lines
Fix two checkpatch complaints about whitespace
Avoid that checkpatch reports the following error message:
ERROR: "(foo*)" should be "(foo *)"
........
r5398 | bvassche | 2014-03-27 10:34:27 +0200 (Thu, 27 Mar 2014) | 6 lines
Avoid that checkpatch complains that return is not a function
Avoid that checkpatch reports the following error message:
ERROR: return is not a function, parentheses are not required
........
r5399 | bvassche | 2014-03-27 10:39:53 +0200 (Thu, 27 Mar 2014) | 1 line
scripts/generate-kernel-patch: Fix for kernel versions 3.7, 3.10, 3.12 and 3.13
........
r5400 | vlnb | 2014-03-29 04:07:22 +0300 (Sat, 29 Mar 2014) | 3 lines
Cleanup
........
r5401 | bvassche | 2014-04-01 20:46:36 +0300 (Tue, 01 Apr 2014) | 1 line
vdisk_blockio: Temporarily disable COMPARE AND WRITE support
........
r5402 | bvassche | 2014-04-02 00:05:31 +0300 (Wed, 02 Apr 2014) | 1 line
vdisk_blockio: Fix the (recently enabled) VERIFY command
........
r5403 | bvassche | 2014-04-03 18:58:16 +0300 (Thu, 03 Apr 2014) | 1 line
ib_srpt: RHEL 6.5 build fix
........
r5404 | vlnb | 2014-04-04 03:57:30 +0300 (Fri, 04 Apr 2014) | 3 lines
Fix typo in scst_report_supported_tm_fns() reported by Steve Magnani <steve.magnani@digidescorp.com>
........
r5405 | bvassche | 2014-04-04 07:38:33 +0300 (Fri, 04 Apr 2014) | 1 line
scripts/specialize-patch: Handle numbers surrounded by parentheses properly
........
r5406 | bvassche | 2014-04-04 08:50:52 +0300 (Fri, 04 Apr 2014) | 1 line
scripts/specialize-patch: Rework r5405
........
r5407 | bvassche | 2014-04-04 08:56:25 +0300 (Fri, 04 Apr 2014) | 1 line
nightly build: Update kernel versions
........
git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/iser@5408 d57e44dd-8a1f-0410-8b47-8ef2f437770f
205 lines
12 KiB
HTML
205 lines
12 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<meta name="Keywords" content="Generic SCSI Target Subsystem for Linux, SCST, SCSI target">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="author" content="Daniel Fernandes">
|
|
<meta name="Robots" content="index,follow">
|
|
<meta name="verify-v1" content="N5TwpSXr8cNkQf0gvE3F3sv+TPHL15k4dTo+ZQCeV9Q=">
|
|
<link rel="stylesheet" href="images/Orange.css" type="text/css">
|
|
<title>SCST: A Generic SCSI Target Subsystem 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">Generic SCSI Target Subsystem 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="http://sourceforge.net/news/?group_id=110471">News</a></li>
|
|
<li><a href="targets.html">Drivers</a></li>
|
|
<li><a href="downloads.html">Downloads</a></li>
|
|
<li><a href="contributing.html">Contributing</a></li>
|
|
<li><a href="comparison.html">Comparison</a></li>
|
|
<li><a href="users.html">Users</a></li>
|
|
<li><a href="solutions.html">Solutions</a></li>
|
|
</ul>
|
|
</div>
|
|
<div id="content-wrap">
|
|
<div id="main">
|
|
<h1>Generic SCSI Target Subsystem for Linux</h1>
|
|
|
|
<p>The generic SCSI target subsystem for Linux (SCST) allows creation of sophisticated storage devices
|
|
from any Linux box. Those
|
|
devices can provide advanced
|
|
functionality, like replication, thin provisioning,
|
|
deduplication, high availability,
|
|
automatic backup, etc. Another class of such devices
|
|
are Virtual Tape Libraries (VTL)
|
|
as well as other disk-based backup solutions.</p>
|
|
<p>SCST devices can use any link which supports
|
|
SCSI-style data exchange: <strong>iSCSI</strong>, <strong>Fibre Channel</strong>, <strong>FCoE</strong>,
|
|
<strong>SAS</strong>,
|
|
<strong>InfiniBand (SRP)</strong>, <strong>Wide (parallel) SCSI</strong>, etc.</p>
|
|
<p>It might
|
|
well be that your favorite storage appliance is running SCST in the firmware.</p>
|
|
|
|
<p>SCST project consists from a set of subprojects: generic SCSI target mid-layer itself (SCST core)
|
|
with a set of device handlers as well as target drivers
|
|
and user space utilities.
|
|
|
|
<h1>Features of SCST Core</h1>
|
|
<ul>
|
|
<li><span>SCST core provides unified,
|
|
consistent interface between SCSI target drivers and
|
|
Linux kernel as well as between Linux kernel and storage backend
|
|
handlers, connecting target drivers with real or emulated storage backend.</span></li>
|
|
<li><span>SCST core performs all required pre- and post- processing of incoming requests as well as
|
|
necessary error recovery.</span></li>
|
|
<li><span>SCST core undertakes most problems, related to execution contexts, thus practically eliminating one of the most
|
|
complicated problem in the kernel drivers development. For example, target drivers for Marvell
|
|
SAS adapters or for InfiniBand SRP are less 3000 lines of code long.</span></li>
|
|
<li><span>Very low overhead and fine-grained locks allow to reach the
|
|
maximum performance and scalability. Particularly, incoming requests can be processed in
|
|
the caller's context or in one of the internal SCST core's tasklets without any
|
|
extra context switches.</span></li>
|
|
<li><span>Device handlers architecture allows various I/O
|
|
modes in backstorage handling. For example, pass-through device handlers allow to export real
|
|
SCSI hardware and vdisk device handler allows to export files as virtual disks.</span></li>
|
|
<li><span>Advanced per-initiator devices visibility management (LUN masking) 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.
|
|
This feature is required for hardware targets, which don't have ability to create
|
|
virtual targets (SAS adapters, for instance).</span></li>
|
|
<li><span>SCST core emulates necessary functionality of SCSI host adapter, because from remote initiators' point of view
|
|
a SCSI target 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:</span>
|
|
<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>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 SCSI standards.</span></li>
|
|
</ul>
|
|
</li>
|
|
|
|
<li><span>SCST core has multithreaded design and complete SMP support, so, if necessary, all your CPU cores will participate in the commands
|
|
processing.</span></li>
|
|
<li><span>Well documented.</span></li>
|
|
</ul>
|
|
<p>Interoperability between remote 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, i.e. remote initiators
|
|
will not know about it, which could
|
|
lead to various problems, including data corruption. Thus, RESERVE/RELEASE commands, locally generated
|
|
UNIT ATTENTIONs, etc. should be intercepted and passed through SCST core.</p>
|
|
|
|
<p>You can find comparison of SCST with other SCSI targets on the <a href="comparison.html">Comparison</a> page.
|
|
Some highlights what it can mean for end users you can find on the <a href="target_iscsi.html">iSCSI-SCST</a> page.
|
|
|
|
<h1>SCST core supports the following I/O modes</h1>
|
|
<ul>
|
|
<li><span>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). In this mode you can, for instance, share your parallel SCSI tape or SATA
|
|
DVD-RW device to your iSCSI network.</span></li>
|
|
<li><span>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 cache.</span></li>
|
|
<li><span>BLOCKIO mode, which performs direct block IO with a block device, bypassing
|
|
page-cache for all operations. This mode works well 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>User space mode using scst_user device handler, which allows to implement in the
|
|
user space high performance virtual SCSI devices. Comparing with fully in-kernel dev handlers
|
|
this mode has very low overhead (few %%).</span></li>
|
|
<li><span>Performance testing device handlers as well as NULLIO mode to provide
|
|
a way for direct performance measurements without overhead of actual data
|
|
transfers from/to underlying SCSI devices.
|
|
</span></li>
|
|
</ul>
|
|
|
|
<h1>Certification</h1>
|
|
|
|
<p>SCST core engine has passed VMware certification as part of
|
|
<a href="http://scalecomputing.com/products">Scale’s Intelligent Clustered Storage</a> technology developed by
|
|
<a href="http://scalecomputing.com">Scale Computing</a> as well as VMware and Microsoft certification as part of
|
|
storage arrays developed by <a href="http://www.open-e.com/">Open-E, Inc</a> and
|
|
<a href="http://www.starboardstorage.com">Starboard Storage</a>.</p>
|
|
|
|
<p>As of October 2012 SCST-based Hewlett-Packard ProLiant BL465c Gen8 earned the maximum
|
|
score 59.99@62 tiles in <a href="http://www.vmware.com/a/vmmark">VMmark Version 2.1.1</a>.</p>
|
|
</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="http://monklinux.blogspot.com/2012/02/scst-configuration-how-to-using-gentoo.html">Gentoo HOWTO</a></p>
|
|
<p><a href="iscsi-scst-howto.txt">HOWTO For iSCSI-SCST</a></p>
|
|
<p><a href="SCST_Gentoo_HOWTO.txt">Gentoo HOWTO For iSCSI-SCST</a></p>
|
|
<p><a href="http://alpinelinux.org/wiki/High_performance_SCST_iSCSI_Target_on_Linux_software_Raid" class="readmore">Alpine Linux HOWTO</a></p>
|
|
<p><a href="qla2x00t-howto.html">HOWTO For QLogic Target Driver</a></p>
|
|
<p><a href="sgv_cache.html">SCST SGV Cache Description</a></p>
|
|
<h1>Articles</h1>
|
|
<p><a href="http://marcitland.blogspot.com/2011/03/accelerating-vdi-using-scst-and-ssds.html">Accelerating VDI Using SCST and SSDs</a>
|
|
by Marc Smith</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>all by Ming Zhang</p>
|
|
<h1>QUESTIONS</h1>
|
|
<p>If you have any questions you can ask them via<br><a href="http://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></h1>
|
|
<p><a href="http://sourceforge.net/donate/index.php?group_id=110471">
|
|
<img src="http://images.sourceforge.net/images/project-support.jpg" width="88" height="32" border="0" alt="Support This Project"> </a></p>
|
|
<h1></h1>
|
|
<p><a href="http://validator.w3.org/check?uri=referer">
|
|
<img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>
|
|
</p>
|
|
<p><a href="http://jigsaw.w3.org/css-validator/check/referer">
|
|
<img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- footer starts here -->
|
|
<div id="footer">
|
|
<p>© Copyright 2004 - 2014<b><font class="names"> Vladislav Bolkhovitin/SCST Ltd & others.</font></b>
|
|
Design by: <b><font class="names">Daniel Fernandes</font></b> </p>
|
|
</div>
|
|
<!-- footer ends here -->
|
|
<!-- Piwik -->
|
|
<script type="text/javascript">
|
|
var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/scst/" : "http://apps.sourceforge.net/piwik/scst/");
|
|
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
|
|
</script><script type="text/javascript">
|
|
piwik_action_name = '';
|
|
piwik_idsite = 1;
|
|
piwik_url = pkBaseURL + "piwik.php";
|
|
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
|
|
</script>
|
|
<object><noscript><p><img src="http://apps.sourceforge.net/piwik/scst/piwik.php?idsite=1" alt="piwik"></p></noscript></object>
|
|
<!-- End Piwik Tag -->
|
|
</body>
|
|
</html>
|