Next release
------------

Changes compared to version 2.2.0:
- Made sure that the SCST session is unregistered after an initiator logs out.
  Due to a race condition sometimes the SCST session was not unregistered.
- Fixed a QP use-after-free triggered by SRP logout. This could cause the
  following error messages to appear:
  ib_srpt: ***ERROR***: srpt_init_ch_qp() failed (-9)
  ib_srpt: ***ERROR***: rejected SRP_LOGIN_REQ because creating a new RDMA
  channel failed.
- Disallowed new logins during module removal.

Version 2.2.0 (January 26, 2012)
-------------

Changes compared to version 2.1.0:
- Changed default value of the kernel module parameter srp_max_req_size from
  2116 into 4148. That last value corresponds to a table size of 255 elements.
- "make debug2release" etc. now also affects ib_srpt.
- Removed "thread" kernel module parameter.
- Slightly reduced the number of IB interrupts caused by SRP traffic.
- Fixed a bug that could cause valid logins to be rejected. The message that
  is logged in the system log if this happens is:
    ib_srpt: ***ERROR***: rejected SRP_LOGIN_REQ because creating a new RDMA
    channel failed
- Fixed a bug that could cause unloading ib_srpt during I/O to take up to 120s.
- Fixed a crash in the I/O context ring allocation that was triggered when
  trying to allocate more memory than available.
- Fixed a bug that caused SRQ creation to fail when using a QLogic HCA (qib driver)
  and Linux kernel version 3.2 or later.
- Builds again on 32-bit systems.

Version 2.1.0 (September 8, 2011)
-------------

Corresponds to r3848 on the 2.1.0.x branch

Changes compared to version 2.0.0:
- Added support for using the HCA node GUID as the SCST target port name
  instead of ib_srpt_target_<n>.
- Fixed a bug that could cause removing ib_srpt during I/O to hang.
- Increased maximum RDMA completion time from 60s to 80s such that disconnecting
  an IB cable during I/O doesn't trigger complaints about IB completions that
  arrived too late.
- Avoided that failed multipart RDMA transfers (e.g. due to disconnecting an IB
  cable) cause trouble.

Known bugs:
- Doesn't build on 32-bit systems.


Version 2.0.0 (December 21, 2010)
-------------

Changes compared to version 1.0.0:
- Significantly improved performance by converting the per-channel I/O context
  ring into separate receive and transmit rings.
- Fixed a bug that could cause a task management request to cause SRP credits
  to be lost.
- Fixed SCSI residual handling.


Version 1.0.1 (April 28, 2009)
-------------

Changes compared to version 1.0.0:
- Performance has been improved. I/O requests are now handled in soft IRQ
  context instead of on a separate thread, which drastically reduces the
  number of context switches needed for processing I/O (r594).
- Added support for building SCST-SRPT against the OFED InfiniBand drivers
  (r814:838).
- Compiles now without further patches on RHEL 5.x / CentOS 5.x systems (r638).
- Compiles now against 2.6.26 and later kernels (r516).
- Fixed incorrect SCST state used on error path (r557).
- Fixed memory leak triggered by rejecting SRP login requests (r800).
- Fixed kernel oops triggered by reception of an asynchronous InfiniBand event.
  Asynchronous events are triggered by e.g. resetting an InfiniBand switch or
  reconnecting an InfiniBand cable (r878:880). The call stack of the oops is
  as follows:
    queue_work+0x1a/0x20
    schedule_work+0x16/0x20
    srpt_event_handler+0xda/0xe0 [ib_srpt]
    ib_dispatch_event+0x39/0x70 [ib_core]
    mlx4_ib_process_mad+0x3e6/0x430 [mlx4_ib]
    ib_post_send_mad+0x374/0x6f0 [ib_mad]
    ? futex_wake+0x105/0x120
    ib_umad_write+0x4a8/0x5c0 [ib_umad]
    vfs_write+0xcb/0x170
    sys_write+0x50/0x90
    system_call_fastpath+0x16/0x1b
- The login information for HCA's with more than two ports is now displayed
  correctly. Note: no such devices exist yet (r799).


Version 1.0.0 (released on July 14, 2008)
-------------

Almost identical to trunk r440 (only the variables SCST_DIR and EXTRA_CFLAGS
in the Makefiles are different from trunk r440).
