nfsd: Protect addition to the file_hashtbl
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 30 Jun 2014 15:48:31 +0000 (11:48 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 8 Jul 2014 21:14:30 +0000 (17:14 -0400)
commit950e0118d06fae26e07b283b83e96124a2075a1d
tree27ac2db5bb9fadc77f1a9d87f67e983cf1f295aa
parent7e6a72e5f1d42768a9949d73d3337277ff96e026
nfsd: Protect addition to the file_hashtbl

Current code depends on the client_mutex to guarantee a single struct
nfs4_file per inode in the file_hashtbl and make addition atomic with
respect to lookup.  Rely instead on the state_Lock, to make it easier to
stop taking the client_mutex here later.

To prevent an i_lock/state_lock inversion, change nfsd4_init_file to
use ihold instead if igrab. That's also more efficient anyway as we
definitely hold a reference to the inode at that point.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4state.c