• Chuck Lever's avatar
    NFSD: Move callback_wq into struct nfs4_client · 38f080f3
    Chuck Lever authored
    Commit 88382036 ("nfsd: update workqueue creation") made the
    callback_wq single-threaded, presumably to protect modifications of
    cl_cb_client. See documenting comment for nfsd4_process_cb_update().
    
    However, cl_cb_client is per-lease. There's no other reason that all
    callback operations need to be dispatched via a single thread. The
    single threading here means all client callbacks can be blocked by a
    problem with one client.
    
    Change the NFSv4 callback client so it serializes per-lease instead
    of serializing all NFSv4 callback operations on the server.
    Reported-by: default avatarDai Ngo <dai.ngo@oracle.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    38f080f3
nfs4callback.c 38.4 KB