• J
    nfsd: protect clid and verifier generation with client_lock · 294ac32e
    Jeff Layton 提交于
    The clid counter is a global counter currently. Move it to be a per-net
    property so that it can be properly protected by the nn->client_lock
    instead of relying on the client_mutex.
    
    The verifier generator is also potentially racy if there are two
    simultaneous callers. Generate the verifier when we generate the clid
    value, so it's also created under the client_lock. With this, there's
    no need to keep two counters as they'd always be in sync anyway, so
    just use the clientid_counter for both.
    
    As Trond points out, what would be best is to eventually move this
    code to use IDR instead of the hash tables. That would also help ensure
    uniqueness, but that's probably best done as a separate project.
    Signed-off-by: NJeff Layton <jlayton@primarydata.com>
    Signed-off-by: NJ. Bruce Fields <bfields@redhat.com>
    294ac32e
nfs4state.c 158.2 KB