• S
    IB/iser: Fix DEVICE REMOVAL handling in the absence of iscsi daemon · c47a3c9e
    Sagi Grimberg 提交于
    iscsi daemon is in user-space, thus we can't rely on it to be invoked
    at connection teardown (if not running or does not receive CPU time).
    
    This patch addresses the issue by re-structuring iSER connection
    teardown logic and CM events handling.
    
    The CM events will dictate the RDMA resources destruction (ib_conn)
    and iser_conn is kept around as long as iscsi_conn is left around
    allowing iscsi/iser callbacks to continue after RDMA transport was
    destroyed.
    
    This patch introduces a separation in logic when handling CM events:
    
    - DISCONNECTED_HANDLER, ADDR_CHANGED
      This events indicate the start of teardown process.
      Actions:
      1. Terminate the connection: rdma_disconnect (send DREQ/DREP)
      2. Notify iSCSI of connection failure
      3. Change state to TERMINATING
      4. Poll for all flush errors to be consumed
    
    - TIMEWAIT_EXIT, DEVICE_REMOVAL
      These events indicate the final stage of termination process and
      we can free RDMA related resources.
      Actions:
      1. Call disconnected handler (we are not guaranteed that DISCONNECTED
         event was invoked in the past)
      2. Cleanup RDMA related resources
      3. For DEVICE_REMOVAL return non-zero rc from cma_handler to
         implicitly destroy the cm_id (Can't rely on user-space, make sure
         we have forward progress)
    
    We replace flush_completion (indicate all flushes were consumed) with
    ib_completion (rdma resources were cleaned up).
    
    The iser_conn_release_work will wait for teardown completions:
    
    - conn_stop was completed (tasks were cleaned-up) - stop_completion
    - RDMA resources were destroyed - ib_completion
    
    And then will continue to free iser connection representation (iser_conn).
    Signed-off-by: NSagi Grimberg <sagig@mellanox.com>
    Signed-off-by: NAriel Nahum <arieln@mellanox.com>
    Signed-off-by: NRoi Dayan <roid@mellanox.com>
    Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: NRoland Dreier <roland@purestorage.com>
    c47a3c9e
iser_verbs.c 35.3 KB