The Linux SCSI Target Wiki

Revision as of 06:18, 30 June 2012 by Marcf (Talk | contribs)
Jump to: navigation, search
LIO Target
LIO 150513.png
tcm_loop SCSI Emulation Device
Original author(s) Nicholas Bellinger
Developer(s) Datera, Inc.
Initial release May 18, 2011 (2011-05-18)
Stable release 4.1.0 / June 20, 2012;
8 years ago
Preview release 4.2.0-rc5 / June 28, 2012;
8 years ago
Development status Production
Written in C
Operating system Linux
Type Fabric module
License GNU General Public License
See Target for a complete overview over all fabric modules.
FILEIO with a tcm_loop SAS port on KVM x86_64 host running v2.6.34 with the new LSI Megasas 8708EM2 PPC HBA emulation into a Windows 7 x64 KVM Guest.
FILEIO with a tcm_loop SCSI port on KVM x86_64 host running v2.6.36-rc3+ with QEMU lsi53c895a HBA emulation into an OS/2 Warp v4 guest. A HPFS partition has been formatted and mounted as DRIVE D:.
tcm_loop fabric module running on LIO v3.2 on a Linux Host providing shared virtual SAS Target emulation into a VM hypervisor to multiple VM guests of RHEL 5.4 x86_64 and NetBSD 5.x 32-bit.
tcm_loop fabric module running on LIO v3.2 on Linux Host v2.6.32-rc5 providing persistent reservations to RHEL 5.4 x86_64 KVM Guest using scsi generic passthrough with Vmware Workstation 6.5.

tcm_loop is a pluggable virtual fabric module (tcm_loop.ko) for the LIO multiprotocol Target engine.

It provides full local SCSI device emulation (SPC-3 and SPC-4) for raw block storage objects. It thus makes any raw block device apear to the Target as a full SPC-3/SPC-4 SCSI compliant device with the corresponding CDB-level SAS emulation, for access from any SCSI LLD driver.

tcm_loop minimizes overhead - it delivers >12 GB/s (native) and >2 GB/s (from a single KVM guest, without hardware assist) on Intel Nehalem platforms. This provides e.g., unmodified guest operating systems, such as VMware ESX or VMware vSphere, to use the full SPC-3/SPC-4 SCSI functionality on any type of local raw block storage object they require.

tcm_loop was initially released on 10/19/2009,[1] and it went upstream into the Linux 2.6.39 kernel on 3/18/2011.[2]



Use targetcli from Datera, Inc. to configure tcm_loop targets. targetcli aggregates service modules via a core library, and exports them through a unified API. It includes the Unified Target to configure single-node SANs independently of their underlying fabric(s).

tcm_loop targets can be configured as described in tcm_loop/targetcli.

Specification compliance

The type of SCSI fabric features that are available with tcm_loop (Target mode emulated SAS ports) includes the complete set of SPC-3 logic in the Target engine including advanced features such as PRs, ALUA, etc.

Target 4 tcm_loop also supports high level fabric emulation. That is, depending on which WWN is used to create the configFS group in /sys/kernel/config/target/loopback/$WWN, it configures itself to return iSCSI, SAS or FC device identifiers for the SCSI LUN protocol identifiers in the EVPD 0x83 device identifier page.

The entire corresponding logic resides in target_core_fabric_lib.c, and is shared by the different target fabric modules. The code simply contains magic numbers defined for different protocols in SPC-4, and is commented using pieces directly from SPC-4.


Timeline of the LinuxIO
Release Details 2011 2012 2013 2014 2015
123456789101112 123456789101112 123456789101112 123456789101112 123456789101112
4.x Version 4.0 4.1
Feature LIO Core Loop back FCoE iSCSI Perf SRP
vHost Perf Misc 16 GFC iSER Misc VAAI Misc DIF Core
DIF iSER DIF FC vhost TCMU Xen Misc Misc virtio 1.0 Misc NVMe OF
Linux 2.6.38 2.6.39 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22

See also


  1. Nicholas Bellinger (10/19/2009). "[TCM_LOOP]: Add a virtual SCSI loopback fabric module". 
  2. Nicholas Bellinger (3/18/2011). "[SCSI] tcm_loop: Add multi-fabric Linux/SCSI LLD fabric module". 

External links

Personal tools
Google AdSense