• Sagi Grimberg's avatar
    iser-target: Remove an atomic operation from the IO path · bdf20e72
    Sagi Grimberg authored
    In order to know that we consumed all the connection completions
    we maintain atomic post_send_buf_count for each IO post send. But
    we can know that if we post a "beacon" (zero length RECV work request)
    after we move the QP into error state and the target does not serve
    any new IO. When we consume it, we know we finished all the connection
    completion and we can go ahead and destroy stuff.
    
    In error completion handler we now just need to check for ISERT_BEACON_WRID
    to arrive and then wait for session commands to cleanup and complete
    conn_wait_comp_err.
    
    We reserve another CQ and QP entries to fit the zero length post recv.
    Signed-off-by: default avatarSagi Grimberg <sagig@mellanox.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    bdf20e72
ib_isert.c 90.4 KB