• Sagi Grimberg's avatar
    iser-target: Parallelize CM connection establishment · 2371e5da
    Sagi Grimberg authored
    There is no point in accepting a new CM request only
    when we are completely done with the last iscsi login.
    Instead we accept immediately, this will also cause the
    CM connection to reach connected state and the initiator
    is allowed to send the first login. We mark that we got
    the initial login and let iscsi layer pick it up when it
    gets there.
    
    This reduces the parallel login sequence by a factor of
    more then 4 (and more for multi-login) and also prevents
    the initiator (who does all logins in parallel) from
    giving up on login timeout expiration.
    
    In order to support multiple login requests sequence (CHAP)
    we call isert_rx_login_req from isert_rx_completion insead
    of letting isert_get_login_rx call it.
    
    Squashed:
    
    iser-target: Use kref_get_unless_zero in connected_handler
    iser-target: Acquire conn_mutex when changing connection state
    iser-target: Reject connect request in failure path
    Signed-off-by: default avatarSagi Grimberg <sagig@mellanox.com>
    Cc: <stable@vger.kernel.org> # v3.10+
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    2371e5da
ib_isert.c 93.1 KB