[openib-general] [PATCH 0/6] [RFC] iSER initiator

Or Gerlitz ogerlitz at voltaire.com
Wed Feb 22 06:22:23 PST 2006


The patch series that follows is sent to the openib community asking 
for comments on the iSER (iSCSI Extensions for RDMA) code. Eventually 
the end goal is going upstream, so we would like to get as much feedback
as possible.

This driver is an iSER transport implementation for the Open iSCSI 
initiator (www.open-iscsi.org) whose kernel portion and TCP provider are
merged in as of 2.6.15 (drivers/scsi/iscsi_trasport_iscsi.c & iscsi_tcp.c) 

Hence iSER is both a provider of the Linux iSCSI transport api (defined 
in scsi/scsi_transport_iscsi.h) and a SCSI LLD (Low Level Driver) of the 
Linux SCSI midlayer api (defined in scsi/scsi_host.h)

More information and TODO items are present at openib wiki iser section.
This RFC is posted knowing the todo list is not over, i've put specfic 
comments and known issues at some of the patches head.

The Open iSCSI initiator discovery of targets, connect and login into a 
target is carried out from user space, where once the login negotiation 
is done, the user space connection is "binded" to a kernel connection. 
The diargram under http://www.open-iscsi.org/docs/open-iscsi-1.jpg shows 
the connecting sequence.

The transport is expected to use a socket for the connection where Linux 
has the means to move a socket from user to kernel space. Under this 
restriction and the inability to move QP from user to kernel space, we 
had to use an iser socket family, where the socket actually maps to 
struct iser_conn which contain the IB connection CMA ID and QP.

Basically, it goes like:
+1 target discovery over TCP/IP with the discovery server
+2 socket creat/bind/setopt/connect to the target
+3 iscsi session create
+4 iscsi connection create
+5 bind iscsi connection to the socket
+6 login request/response negotiation
+7 iscsi connection start
+8 the SCSI midlayer starts its inquiry and so on

The code has been tested with 2.6.15, latest openib (r5460) and the user 
part of the open-iscsi-0.4-434 release, with the 434 release, the only 
patch for open-iscsi needed to support iSER is linux-2.6.15-iscsi_iser.diff 
under https://openib.org/svn/gen2/trunk/src/linux-kernel/patches.






More information about the general mailing list