• J. Bruce Fields's avatar
    nfsd: don't base cl_cb_status on stale information · d4f72cb7
    J. Bruce Fields authored
    The rpc client we use to send callbacks may change occasionally.  (In
    the 4.0 case, the client can use setclientid/setclientid_confirm to
    update the callback parameters.  In the 4.1+ case, sessions and
    connections can come and go.)
    
    The update is done from the callback thread by nfsd4_process_cb_update,
    which shuts down the old rpc client and then creates a new one.
    
    The client shutdown kills any ongoing rpc calls.  There won't be any new
    ones till the new one's created and the callback thread moves on.
    
    When an rpc encounters a problem that may suggest callback rpc's
    aren't working any longer, it normally sets NFSD4_CB_DOWN, so the server
    can tell the client something's wrong.
    
    But if the rpc notices CB_UPDATE is set, then the failure may just be a
    normal result of shutting down the callback client.  Or it could just be
    a coincidence, but in any case, it means we're runing with the old
    about-to-be-discarded client, so the failure's not interesting.
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    d4f72cb7
nfs4callback.c 28.5 KB