| Solaris |
|
|
This page is a modified version of a Sun-internal "Transfer of Information" document. It's intended to serve as a complement to the other iSER material on this site.
iSER accelerates the iSCSI protocol by mapping the data transfer phases to Remote DMA (RDMA) operations. As a result an iSER initiator should be able to read and write data from an iSER target at high data rates with relatively low CPU utilization compared to iSCSI using TCP/IP. This project will implement both an iSER initiator and an iSER target. In addition, the project will implement an iSCSI port provider (iscsit) for COMSTAR adding an iSCSI transport option to the existing Fibre Channel and SAS support. The iSER target will be an extension of this iSCSI port provider.
RDMA transports other than infiniband are not currently supported.
This project depends on the existing COMSTAR and Infiniband driver projects.
The current iSER design defines a component called "iSCSI Data Mover" (IDM). The iSCSI initiator and iSCSI target port provider will link against the IDM kernel module which will provide iSCSI connection services and a transport abstraction layer. iSER will be implemented beneath this abstraction layer allowing both initiator and target to use a single shared iSER implementation.
The project will deliver the following components:

ARC case:
Other relevant ARC cases:
This is explained in the following documents:
iSER protocol
iSCSI target
The best guide to the key data structures, locking, and synchronization is the code itself. What follows are some notes regarding particular aspects of the code.
There are a number of idm_*_hold() and idm_*_rele() routines (e.g. idm_conn_hold(), idm_conn_rele()) defined in idm. If you call an idm lookup or find function it takes a reference. So every time you call idm_task_find() it is the same as calling idm_task_hold(). You must explicitly call idm_task_rele() after you are done working with the task.
In general it is good to release the reference in the same function you acquired the hold. So if you call idm_task_find(), you should call idm_task_rele() before you leave the function. Similarly if you call idm_task_hold(), call idm_task_rele() before you leave the function. There are exceptions to this rule but consider these exceptions carefully. Following this rule helps to make the refcnts easy to review and validate.
ssh://anon@hg.opensolaris.org/hg/iser/iser-onnv
These are listed on the OpenSolaris iSER project page.
{{{
cd my-workspace
cp usr/src/tools/env/developer.sh .
}}}
(Edit developer.sh for your parameters. If you don't know what to edit, ask an experienced OpenSolaris developer.)
{{{
nohup env nightly -n ./developer.sh &
}}}
{{{
cd my-workspace
ws
cd usr/src
make setup (This setups up header files and other prerequisites)
cd usr/src/lib/libiscsit; make install
cd /usr/src/cmd/itadm; make install
cd /usr/src/cmd/iscsitsvc; make install
cd usr/src/cmd/mdb; make install (Not sure if this will work... if not do a nightly)
cd usr/src/uts/intel/idm; make install (replace intel with sparc on sparc)
cd usr/src/uts/intel/iscsit; make install (replace intel with sparc on sparc)
cd usr/src/uts/intel/iser; make install (replace intel with sparc on sparc)
}}}
The installation guide may be found in the iSER Release Notes.
Note that you may need to run add_drv iser after installing.
A configuration guide may be found in the iSER Release Notes.
Debugging tips may be found on the iSER Debugging Tips page.
A list of relevant MDB dcmds may be found on the MDB dcmds page.
The software is developed as a number of Solaris packages.
Release notes for development versions may be found here.
All components are intended to be from the same release of OpenSolaris.
iSCSI: The Universal Storage Connection by John L. Hufferd (ISBN 020178419X).
Terms of Use
|
Privacy
|
Trademarks
|
Copyright Policy
|
Site Guidelines
|
Site Map
|
Help
Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.
© 2012, Oracle Corporation and/or its affiliates.