To be done
----------

 - See http://scst.sourceforge.net/contributing.html

 - Add choosing default number of threads for BLOCKIO based on "rotational"
   sysfs attribute of the device.

 - Remove cmd->data_len

 - Reimplement VDISK handler with usage of async. read/write operations
   (in order to avoid unnecessary context switches) and direct access to
   the page cache (in order to avoid data copy between it and internal
   buffers). Requires modifications of the kernel.

 - Dynamic I/O flow control, when the device queue depth on the target
   will be dynamically decreased/increased based on how slow/fast the
   backstorage speed comparing to the target link for current IO
   pattern.

 - Fix in-kernel O_DIRECT mode.

 - Close integration with Linux initiator SCSI mid-level, including
   queue types (simple, ordered, etc.) and local initiators (sd, st, sg,
   etc.) support. Requires modifications of the kernel.

 - Improve task management and Unit Attention conditions handling
   using ACA in order to make them always reliable. Honoring NACA, QErr,
   TST, UA_INTLCK_CTRL bits. Requires deep modifications of the kernel.

 - Better handle of devices DMA restrictions, where needed.

 - Small ToDo's spread all over the code.

 - Additional ability for target drivers to ask for command's retry also
   after xmit_response() and rdy_to_xfer() returned (for example, if a
   command was successfully sent to the target card, but later it was
   returned by the card with BUSY completion status).

 - Advanced SCSI commands support: COPY, EXTENDED COPY, third party
   RESERVE, etc.
