• J. Bruce Fields's avatar
    nfsd4: Move callback setup to callback queue · 6ff8da08
    J. Bruce Fields authored
    Instead of creating the new rpc client from a regular server thread,
    set a flag, kick off a null call, and allow the null call to do the work
    of setting up the client on the callback workqueue.
    
    Use a spinlock to ensure the callback work gets a consistent view of the
    callback parameters.
    
    This allows, for example, changing the callback from contexts where
    sleeping is not allowed.  I hope it will also keep the locking simple as
    we add more session and trunking features, by serializing most of the
    callback-specific work.
    
    This also closes a small race where the the new cb_ident could be used
    with an old connection (or vice-versa).
    Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
    6ff8da08
nfs4callback.c 21.6 KB