Spdk/lib/bdev/iscsi
Ben Walker bcff4c89b8 bdev: Rename spdk_internal/bdev.h to spdk/bdev_module.h
This will become the public interface for implementing
bdev modules. Right now the file exposes too much of
the guts of the bdev layer to modules, so it needs
to be stripped down.

Change-Id: Ie8b8c3271d51fdb8d0c24a80244b3f3e510c8790
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/412297
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
2018-05-25 16:02:22 +00:00
..
bdev_iscsi.c bdev: Rename spdk_internal/bdev.h to spdk/bdev_module.h 2018-05-25 16:02:22 +00:00
Makefile bdev: add iSCSI initiator bdev module 2018-03-21 20:35:42 -04:00
README bdev: add iSCSI initiator bdev module 2018-03-21 20:35:42 -04:00

This is a very rough initial cut at an SPDK iSCSI initiator bdev module.  It
only performs operations (connect, login, read cap, read/write).
But this passes basic verify tests with bdevperf and with fio.

Configuration file for iSCSI initiator is in the following format.
Note that the "/0" at the end means "LUN 0".

[iSCSI_Initiator]
  URL iscsi://127.0.0.1/iqn.2016-06.io.spdk:disk1/0 iSCSI0

To Do Items
===========
1) Create RPCs.
2) Use asynchronous polling for connect/login/disconnect.  Read/write is already
   using libiscsi event framework.
3) Choose initiator name as part of RPC configuration.  Currently this is hardcoded
   with g_initiator string.
4) Implement reset path.
5) Implement unmap path.
6) Use REPORT_LUNS to dynamically find all of the block devices attached to the
   iSCSI target node instead of hard-coding LUN 0.  This will need some extra
   investigation in libiscsi.  Currently the full URL is used which includes the LUN.
   Not sure yet how we can login to target node and then submit IO to different
   LUNs.  Let's treat this as low priority for now.