|
From: Yan B. <ya...@me...> - 2014-01-21 14:34:03
|
These patches implement iSER (iSCSI Extensions for RDMA) support for SCST.
In order to have an additional transport, iSCSI code is refactored and a transport API is introduced
to support TCP and RDMA transports living side by side.
There is a new isert-scst.ko module and changes to iscsi-scstd.
Both MLNX_OFED and OFED are supported as well.
Benchmarks show close to 1M iops and line rate bandwidth for 56GB IB and 40GB RoCE.
The code underwent a number of internal reviews as well as HA and stress testing.
Tested scenarios include:
* Data integrity tests using fio
* Multipath failover
* 100 targets on 4 IB devices
* Reset SCSI device on initiator during IO
* Multiple initiator fail scenarios during login phase
* CHAP authentication
* Discovery over iSER
Changes from last internal version:
* Lowered memory footprint per iSER connection
* Do not use alloc_pages(), since memory fragmentation will cause failure to allocate after long run
* Remove unused abstractions from transport API
* Allow discovery over iSER
* Gracefully handle multiple error conditions upon login (especially when initiator crashes)
* Fixed a few issues found due to extensive HA tesing
* Handle RDMA_CM_EVENT_DEVICE_REMOVAL
* Enabled CHAP authentication over iSER
* Some minor optimizations
Yan Burman (9):
iscsi: Add iSCSI transport API
iscsi: Move TCP code over to transport API
iscsi: Export some functions needed by isert and refactor code for
reuse
isert: Add initial isert code
iscsid: Add start/stop transmit abstraction
iscsid: Refactor code for iser reuse
iscsid: Implement iser support
scstadmin: Load isert-scst if iscsi is present
scst: Add iSER module to RPM build
iscsi-scst/Makefile | 76 +-
iscsi-scst/README.iser_ofed | 117 ++
iscsi-scst/include/iscsi_scst.h | 7 +
iscsi-scst/include/iscsit_transport.h | 65 +
iscsi-scst/include/isert_scst.h | 24 +
iscsi-scst/kernel/Makefile | 3 +-
iscsi-scst/kernel/conn.c | 160 +--
iscsi-scst/kernel/iscsi.c | 453 ++++---
iscsi-scst/kernel/iscsi.h | 29 +-
iscsi-scst/kernel/iscsi_dbg.h | 6 +
iscsi-scst/kernel/iscsit_transport.c | 64 +
iscsi-scst/kernel/isert-scst/Kconfig | 8 +
iscsi-scst/kernel/isert-scst/Makefile | 40 +
iscsi-scst/kernel/isert-scst/Makefile.in-kernel | 4 +
iscsi-scst/kernel/isert-scst/TODO | 10 +
iscsi-scst/kernel/isert-scst/iser.h | 315 +++++
iscsi-scst/kernel/isert-scst/iser_buf.c | 303 +++++
iscsi-scst/kernel/isert-scst/iser_datamover.c | 296 +++++
iscsi-scst/kernel/isert-scst/iser_datamover.h | 60 +
iscsi-scst/kernel/isert-scst/iser_global.c | 161 +++
iscsi-scst/kernel/isert-scst/iser_hdr.h | 27 +
iscsi-scst/kernel/isert-scst/iser_pdu.c | 568 +++++++++
iscsi-scst/kernel/isert-scst/iser_rdma.c | 1544 +++++++++++++++++++++++
iscsi-scst/kernel/isert-scst/isert.c | 536 ++++++++
iscsi-scst/kernel/isert-scst/isert.h | 137 ++
iscsi-scst/kernel/isert-scst/isert_dbg.h | 50 +
iscsi-scst/kernel/isert-scst/isert_login.c | 940 ++++++++++++++
iscsi-scst/kernel/nthread.c | 48 +-
iscsi-scst/kernel/param.c | 20 +-
iscsi-scst/kernel/target.c | 10 +
iscsi-scst/usr/ctldev.c | 51 +-
iscsi-scst/usr/iscsi_scstd.c | 219 +++-
iscsi-scst/usr/iscsid.c | 29 +
iscsi-scst/usr/iscsid.h | 9 +
iscsi-scst/usr/misc.c | 65 +
iscsi-scst/usr/misc.h | 1 +
iscsi-scst/usr/param.c | 8 +
iscsi-scst/usr/target.c | 3 +-
scst.spec.in | 1 +
scstadmin/init.d/scst | 1 +
40 files changed, 6138 insertions(+), 330 deletions(-)
create mode 100644 iscsi-scst/README.iser_ofed
create mode 100644 iscsi-scst/include/iscsit_transport.h
create mode 100644 iscsi-scst/include/isert_scst.h
create mode 100644 iscsi-scst/kernel/iscsit_transport.c
create mode 100644 iscsi-scst/kernel/isert-scst/Kconfig
create mode 100644 iscsi-scst/kernel/isert-scst/Makefile
create mode 100644 iscsi-scst/kernel/isert-scst/Makefile.in-kernel
create mode 100644 iscsi-scst/kernel/isert-scst/TODO
create mode 100644 iscsi-scst/kernel/isert-scst/iser.h
create mode 100644 iscsi-scst/kernel/isert-scst/iser_buf.c
create mode 100644 iscsi-scst/kernel/isert-scst/iser_datamover.c
create mode 100644 iscsi-scst/kernel/isert-scst/iser_datamover.h
create mode 100644 iscsi-scst/kernel/isert-scst/iser_global.c
create mode 100644 iscsi-scst/kernel/isert-scst/iser_hdr.h
create mode 100644 iscsi-scst/kernel/isert-scst/iser_pdu.c
create mode 100644 iscsi-scst/kernel/isert-scst/iser_rdma.c
create mode 100644 iscsi-scst/kernel/isert-scst/isert.c
create mode 100644 iscsi-scst/kernel/isert-scst/isert.h
create mode 100644 iscsi-scst/kernel/isert-scst/isert_dbg.h
create mode 100644 iscsi-scst/kernel/isert-scst/isert_login.c
--
1.7.10.1
|