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 |