Summary of changes between versions 2.1.0 and 2.1.1
---------------------------------------------------

 - Update to kernels up to 3.1

 - Bug fixes and other improvements


Summary of changes between versions 2.0.0 and 2.1.0
---------------------------------------------------

 - Update to kernels up to 3.0

 - Significant Task Management commands handling improvements and fixes

 - Assigning CPU affinity to RD/WR threads added

 - Other minor fixes and improvements


Summary of changes in iSCSI-SCST between versions 1.0.1 and 1.0.2
-----------------------------------------------------------------

 - Support bidirectional transfers added

 - Connection and session reinstatements fixes

 - Fixes in handling of initiators.allow and initiators.deny files

 - Sync with the latest IET

 - Other minor fixes and cleanups


Summary of changes in iSCSI-SCST between versions 1.0.0 and 1.0.1
-----------------------------------------------------------------

 - Support for variable length CDB added

 - Sending and receiving padding bytes as well as sesnse data
   reimplemented to make it more reliable

 - Support for SCSI Async. Event Notifications added

 - Sessions and connections reinstatement reimplemented to be conforming
   to iSCSI RFC

 - iscsi-scst-adm fixed

 - Removed artificial limitation of sg_tablesize. It isn't needed,
   because the regular iSCSI negotiated MaxRecvDataSegmentLength-related
   facilities do all the job pretty well.

 - Merge with IET r170-211:

   * Update MaxConnections documentation

   * Remove isns config description from man page

   * Check return values of chdir(), ftruncate() and write(), because
     recent versions of the glibc insist on the return value being
     checked by introducing __attribute__((warn_unused_result)) to these
     functions.

   * Fix snprintf use in isns.c

   * Take \0-termination into account when passing strings to
     isns_tlv_set() to solve incompatibility with MS iSNS 3.0 as IQN
     length is multiple of 4

   * Fix list corruption if SCST target registration fails

   * Register the target port actually used instead of the default iSCSI port.

   * Remove unused connection->pad

   * Refactor cmnd_execute()

   * Introduce min*/max*() and more list_* macros

   * Multipart PDU support for discovery sessions

   * Add support for Reject PDUs and make use of them in appropriate places.

   * Ignore SIGPIPE in iscsi-scstd

   * Allow removal of kernel target objects if the user space object does not exist

   * Use netlink_socket_release() to clean up netlink sockets correctly
     (taking care of namespaces)

   * More scalable proc seq_file implementation

   * Segfault in ietd buffer overrun in dump_line

   * Add iscsi-scst-adm support to display list of CHAP accounts and their data

   * Fixed compilation on glibc 2.8

   * Fix CHAP account handling bugs

   * Fix bugs in multi PDU handling code

 - Support for CentOS 5.2 added (Bart Van Assche)

 - Fixed NOP-Out with payload handling

 - Several minor iSCSI RFC violations fixed

 - Update for kernels up to 2.6.29

 - Zero-copy feature, introduced by put_page_callback patch made
   kernel compile time configurable via
   CONFIG_TCP_ZERO_COPY_TRANSFER_COMPLETION_NOTIFICATION option. If you
   upgrade from earlier versions, see the corresponding "[CAUTION]"
   e-mail in scst-devel mailing list about possible compatibility
   problems.

 - A lot of cleanups and minor fixes

Summary of changes in iSCSI-SCST since it was IET
-------------------------------------------------

 - Commands processing flow changed to work with SCST. Significant
   cleanup was done. Modules and config files were renamed to allow to
   run with IET on the same host.

 - In IET the iSCSI negotiation isn't fully iSCSI RFC confirmed: it doesn't
   support ranges of values and, more important, violates RFC in case
   when in the IET config file some value for some parameter is set and
   a remote initiator doesn't initiate the negotiation for this
   parameter or declare its value. According to RFC, in this case IET
   shall use the RFC-specified default value, but it uses config file
   specified one instead. Looks like the implementation confuses IET
   config file default values and iSCSI RFC ones. The default values
   handling was fixed. But support for ranges remains unfixed (see ToDo
   file).

 - All shutdown/restart problems (resource leaks, hangups, etc.), especially
   under load, were fixed.

 - Full duplex network IO implemented.

 - Threading model reimplemented.

 - Digests calculation made multi-threaded.

 - TX data digest errors handling iSCSI RFC violation was fixed. Another one
   (SNACK handling) remains unfixed.

 - Ability to send data with sense in a single response added.

 - Ability to handle initiators misbehavior a bit improved: several BUG()'s
   were replaced by the proper handling. However, there is a plenty of work in
   this area left, IET is known to have a lot of weaknesses here.

 - Task management made more robust. Particularly, possible data
   corruption scenarios were fixed.

 - Implemented SN based iSCSI IO flow control

 - Response data send timeout implemented: now if initiator doesn't
   accept data for too long (30 sec), target closes connection

 - A lot of other bugfixes and code cleanups.

