• Olga Kornievskaia's avatar
    SUNRPC dont update timeout value on connection reset · 7de62bc0
    Olga Kornievskaia authored
    Current behaviour: every time a v3 operation is re-sent to the server
    we update (double) the timeout. There is no distinction between whether
    or not the previous timer had expired before the re-sent happened.
    
    Here's the scenario:
    1. Client sends a v3 operation
    2. Server RST-s the connection (prior to the timeout) (eg., connection
    is immediately reset)
    3. Client re-sends a v3 operation but the timeout is now 120sec.
    
    As a result, an application sees 2mins pause before a retry in case
    server again does not reply.
    
    Instead, this patch proposes to keep track off when the minor timeout
    should happen and if it didn't, then don't update the new timeout.
    Value is updated based on the previous value to make timeouts
    predictable.
    Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
    Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
    7de62bc0
xprt.c 51.4 KB