nfsd: fix filecache lookup
commit 28c7d86bb6172ffbb1a1237c6388e77f9fe5f181 upstream. If the lookup keeps finding a nfsd_file with an unhashed open file, then retry once only. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc: stable@vger.kernel.org Fixes: 65294c1f2c5e "nfsd: add a new struct file caching facility to nfsd" Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
4544a69124
commit
6282102dbc
@ -791,6 +791,7 @@ nfsd_file_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||
struct nfsd_file *nf, *new;
|
||||
struct inode *inode;
|
||||
unsigned int hashval;
|
||||
bool retry = true;
|
||||
|
||||
/* FIXME: skip this if fh_dentry is already set? */
|
||||
status = fh_verify(rqstp, fhp, S_IFREG,
|
||||
@ -826,6 +827,11 @@ wait_for_construction:
|
||||
|
||||
/* Did construction of this file fail? */
|
||||
if (!test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) {
|
||||
if (!retry) {
|
||||
status = nfserr_jukebox;
|
||||
goto out;
|
||||
}
|
||||
retry = false;
|
||||
nfsd_file_put_noref(nf);
|
||||
goto retry;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user