[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