# iSCSI Target Driver
Author: Daniel Fernandes
Keywords: iSCSI target, iSCSI-SCST

#

## Generic SCSI Target Subsystem for Linux

# ISCSI target driver iSCSI-SCST

ISCSI-SCST is an iSCSI target driver for SCST. It is a deeply reworked fork of IET with a lot of fixes and improvements. Reasons of the fork were:

- To be able to use full power of SCST core.
- To fix all the problems, corner cases issues and iSCSI standard violations which IET has.

IET in many corner cases has a lot of problems, like ignoring errors processing, as it is for memory allocations, crashing itself with BUG() macro, as it is for malformed packets from initiators, possible data corruptions, because of, for instance, unsafe task management or sessions reinstatement implementations, etc. There was no way to fix all them without a fork, because it needed a deep code redesign to fix all internal architecture and implementation issues which IET has. As the result of this effort nearly all (>90% overall and almost 100% of the fast path core) of the IET kernel code and 20-25% of the user space code were rewritten.

You can find comparison of iSCSI-SCST with IET and other iSCSI targets on the Comparison page. Some highlights:

- Improved performance. In some cases improvement >100%. Especially it is noticeable with several initiators accessing the same device.
- Pass-through mode with one to many relationship, when multiple initiators can connect to exported local SCSI devices. For instance, in this mode you can safely export your parallel SCSI tape or tape library, or VTL on your iSCSI net and multiple initiators can share it without risk of data loss because of the shared usage.
- Automatic PnP-like reconfiguration, when initiators instantly see any configuration changes on the target, like addition of new LUNs or a LUN resize. No restart or anything like that is needed.
- Safe implementation of many management and errors recovery facilities as well as better handling of various corner cases, which means better errors recovery stability without putting user data at risk.
- Advanced devices visibility management, when different initiators can see different set of devices from the same target.
- 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.
- 4KB blocks eliminate abysmal write performance issues caused by misaligned partitions.
- Virtual CD/DVD-ROMs.
- Ability to create target devices emulators in the user space.
- Ability to create multi-transport SCSI targets, which can export (possibly, the same) devices over multiple transports.

If you are an IET user before installation carefully read README files of both iSCSI-SCST and the SCST core. You can also use a migration tool developed by Scalable Informatics Inc., which will convert your IET machine to an iSCSI-SCST machine. See README for more details.

The latest stable version is 2.0.0. Requires Linux kernel version 2.6.18.x or higher and SCST version 2.0.0 or higher. Tested mostly on i386 and x86_64, but should work on any other supported by Linux platform.

You can find the latest development version of this driver in the SCST SVN. See the download page how to setup access to it.

# Certification

ISCSI-SCST engine has passed VMware certification as part of Scale’s Intelligent Clustered Storage technology developed by Scale Computing and storage arrays developed by Open-E, Inc.