This uses libiscsi to implement an iSCSI initiator bdev module for SPDK. Still a lots of work to do on this - posting it in case anyone is interested in working on this further. A number of todo items are listed in a README in the lib/bdev/iscsi directory. Signed-off-by: Jim Harris <james.r.harris@intel.com> Signed-off-by: Ziye Yang <optimistyzy@gmail.com> Change-Id: I060e33de0cd6796246789bf0e1bb4f2df59d8f71 Reviewed-on: https://review.gerrithub.io/390313 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
25 lines
1.1 KiB
Plaintext
25 lines
1.1 KiB
Plaintext
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.
|