NFSD: Refactor find_file()
find_file() is now the only caller of find_file_locked(), so just fold these two together. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: NeilBrown <neilb@suse.de> Reviewed-by: Jeff Layton <jlayton@kernel.org>
This commit is contained in:
parent
9270fc514b
commit
1542474800
@ -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,
|
|
||||||
lockdep_is_held(&state_lock)) {
|
|
||||||
if (fh_match(&fp->fi_fhandle, &fh->fh_handle)) {
|
|
||||||
if (refcount_inc_not_zero(&fp->fi_ref))
|
|
||||||
return fp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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();
|
rcu_read_lock();
|
||||||
fp = find_file_locked(fh, hashval);
|
hlist_for_each_entry_rcu(fi, &file_hashtbl[hashval], fi_hash,
|
||||||
|
lockdep_is_held(&state_lock)) {
|
||||||
|
if (fh_match(&fi->fi_fhandle, &fhp->fh_handle)) {
|
||||||
|
if (refcount_inc_not_zero(&fi->fi_ref)) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return fp;
|
return fi;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rcu_read_unlock();
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user