• Chuck Lever's avatar
    sunrpc: Allow xprt->ops->timer method to sleep · b977b644
    Chuck Lever authored
    The transport lock is needed to protect the xprt_adjust_cwnd() call
    in xs_udp_timer, but it is not necessary for accessing the
    rq_reply_bytes_recvd or tk_status fields. It is correct to sublimate
    the lock into UDP's xs_udp_timer method, where it is required.
    
    The ->timer method has to take the transport lock if needed, but it
    can now sleep safely, or even call back into the RPC scheduler.
    
    This is more a clean-up than a fix, but the "issue" was introduced
    by my transport switch patches back in 2005.
    
    Fixes: 46c0ee8b ("RPC: separate xprt_timer implementations")
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    b977b644
xprt.c 37.8 KB