• C
    xprtrdma: Ensure ri_id is stable during MR recycling · 15d9b015
    Chuck Lever 提交于
    ia->ri_id is replaced during a reconnect. The connect_worker runs
    with the transport send lock held to prevent ri_id from being
    dereferenced by the send_request path during this process.
    
    Currently, however, there is no guarantee that ia->ri_id is stable
    in the MR recycling worker, which operates in the background and is
    not serialized with the connect_worker in any way.
    
    But now that Local_Inv completions are being done in process
    context, we can handle the recycling operation there instead of
    deferring the recycling work to another process. Because the
    disconnect path drains all work before allowing tear down to
    proceed, it is guaranteed that Local Invalidations complete only
    while the ri_id pointer is stable.
    Signed-off-by: NChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: NAnna Schumaker <Anna.Schumaker@Netapp.com>
    15d9b015
frwr_ops.c 18.1 KB