Commit 15424748 authored by Chuck Lever's avatar Chuck Lever

NFSD: Refactor find_file()

find_file() is now the only caller of find_file_locked(), so just
fold these two together.
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Reviewed-by: default avatarNeilBrown <neilb@suse.de>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
parent 9270fc51
...@@ -4682,31 +4682,24 @@ move_to_close_lru(struct nfs4_ol_stateid *s, struct net *net) ...@@ -4682,31 +4682,24 @@ move_to_close_lru(struct nfs4_ol_stateid *s, struct net *net)
nfs4_put_stid(&last->st_stid); nfs4_put_stid(&last->st_stid);
} }
/* search file_hashtbl[] for file */ static noinline_for_stack struct nfs4_file *
static struct nfs4_file * nfsd4_file_hash_lookup(const struct svc_fh *fhp)
find_file_locked(const struct svc_fh *fh, unsigned int hashval)
{ {
struct nfs4_file *fp; unsigned int hashval = file_hashval(fhp);
struct nfs4_file *fi;
hlist_for_each_entry_rcu(fp, &file_hashtbl[hashval], fi_hash, rcu_read_lock();
hlist_for_each_entry_rcu(fi, &file_hashtbl[hashval], fi_hash,
lockdep_is_held(&state_lock)) { lockdep_is_held(&state_lock)) {
if (fh_match(&fp->fi_fhandle, &fh->fh_handle)) { if (fh_match(&fi->fi_fhandle, &fhp->fh_handle)) {
if (refcount_inc_not_zero(&fp->fi_ref)) if (refcount_inc_not_zero(&fi->fi_ref)) {
return fp; rcu_read_unlock();
return fi;
}
} }
} }
return NULL;
}
static struct nfs4_file * find_file(struct svc_fh *fh)
{
struct nfs4_file *fp;
unsigned int hashval = file_hashval(fh);
rcu_read_lock();
fp = find_file_locked(fh, hashval);
rcu_read_unlock(); rcu_read_unlock();
return fp; return NULL;
} }
/* /*
...@@ -4757,9 +4750,10 @@ nfs4_share_conflict(struct svc_fh *current_fh, unsigned int deny_type) ...@@ -4757,9 +4750,10 @@ nfs4_share_conflict(struct svc_fh *current_fh, unsigned int deny_type)
struct nfs4_file *fp; struct nfs4_file *fp;
__be32 ret = nfs_ok; __be32 ret = nfs_ok;
fp = find_file(current_fh); fp = nfsd4_file_hash_lookup(current_fh);
if (!fp) if (!fp)
return ret; return ret;
/* Check for conflicting share reservations */ /* Check for conflicting share reservations */
spin_lock(&fp->fi_lock); spin_lock(&fp->fi_lock);
if (fp->fi_share_deny & deny_type) if (fp->fi_share_deny & deny_type)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment