1. Update the OFED wiki entry about SRPT: * https://wiki.openfabrics.org/tiki-index.php?page=SRPT+Installation 2. Analyze and document the implications of sdev->mr = ib_get_dma_mr(sdev->pd, IB_ACCESS_LOCAL_WRITE). 3. Document the features added since 1.0.0 in the README file. 4. Implement support for bidirectionial SCSI commands. The SRP protocol supports these, but the SRP target not yet. 5. Evaluate the possibility of removing the worker thread entirely and instead to add a compile-time option called e.g. CONFIG_SRPT_WORK_IN_TREAD. This compile-time option, if enabled, will process all commands in the SCST context SCST_CONTEXT_THREAD, similar to CONFIG_QLA_TGT_DEBUG_WORK_IN_THREAD. 6. Allocate memory for task management data structures from a memory pool instead of via kmalloc(..., GFP_ATOMIC). The last call has a high probability of failing because the GFP_ATOMIC area is quite small and heavily used when under load (e.g. network drivers allocate skb's from this pool). Failure to allocate memory for even a single task management command would lead to putting the whole device offline with possible corresponding data loss. 7. Replace the calls to srpt_abort_if_disconnecting() by calls to scst_cmd_aborted(). 8. Start using the SGV clustering pool. More information can be found in the documentation of struct scst_tgt_template in scst.h (use_clustering has to be set to 1). A general description of the SGV cache can be found here: http://scst.sourceforge.net/sgv_cache.txt.