            ib_srpt and session management
            ==============================

The following actions related to SRP sessions can all occur concurrently:
* The communication manager invokes either srpt_ib_cm_handler() or
  srpt_rdma_cm_handler().
* HCA driver invokes the queue pair (QP) completion handler srpt_completion().
* HCA driver invokes the QP async event handler srpt_qp_event().
* HCA transfers data between initiator and target via RDMA.
* srpt_do_compl_work() polls the QP.
* SCST core invokes one of the callback functions defined in srpt_template.

The actions that occur over the lifetime of a session are as follows:
- A REQ message is received from the initiator.
- srpt_cm_req_recv() is invoked, allocates an I/O context ring and a queue pair
  and creates an SCST session.
- If the connection request is not accepted, a REJ message is sent and
  srpt_close_ch() is invoked. The srpt_close_ch() call causes the allocated
  resources to be freed asynchronously.
- If the connection request is accepted a REP message is sent to the initiator.
- Once an RTU message is received from the initiator, srpt_cm_rtu_recv() is
  invoked. That function changes the queue pair state into RTS, the channel
  state into CH_LIVE and triggers processing of the wait list.
- RDMA communication starts and continues until either a DREQ message is
  received or sent. A DREQ is sent either because a target port is disabled or
  because the SCST core requested to close the session.
- After a DREQ has been sent either a DREP will be received or the TimeWait
  state will be reached. Both trigger a srpt_close_ch() call.
- srpt_close_ch() changes the channel state into CH_DRAINING, the
  queue pair state into IB_QPS_ERR and queues a zero-length write.
- Upon receipt of the zero-length write completion the channel state is
  changed into CH_DISCONNECTED. This is the last work completion so once the
  channel state has reached CH_DISCONNECTED it is guaranteed that the queue
  pair completion handler won't be invoked again.
- scst_unregister_session() is called.
- Once scst_unregister_session() has finished srpt_unreg_sess() is invoked.
- srpt_unreg_sess() destroys the CM ID and decrements the channel refcount.
- Once the channel refcount drops to zero srpt_free_ch() is invoked which
  frees the queue pair and other IB resources.

