mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 03:30:53 +07:00
SUNRPC: Simplify lookup code
We no longer need to worry about whether or not the entry is hashed in order to figure out if the contents are valid. We only care whether or not the refcount is non-zero. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
95cd623250
commit
07d02a67b7
@ -208,9 +208,9 @@ char * rpcauth_stringify_acceptor(struct rpc_cred *);
|
||||
static inline
|
||||
struct rpc_cred *get_rpccred(struct rpc_cred *cred)
|
||||
{
|
||||
if (cred != NULL)
|
||||
atomic_inc(&cred->cr_count);
|
||||
if (cred != NULL && atomic_inc_not_zero(&cred->cr_count))
|
||||
return cred;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -226,9 +226,7 @@ struct rpc_cred * get_rpccred(struct rpc_cred *cred)
|
||||
static inline struct rpc_cred *
|
||||
get_rpccred_rcu(struct rpc_cred *cred)
|
||||
{
|
||||
if (atomic_inc_not_zero(&cred->cr_count))
|
||||
return cred;
|
||||
return NULL;
|
||||
return get_rpccred(cred);
|
||||
}
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
@ -588,18 +588,14 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
|
||||
if (!entry->cr_ops->crmatch(acred, entry, flags))
|
||||
continue;
|
||||
if (flags & RPCAUTH_LOOKUP_RCU) {
|
||||
if (test_bit(RPCAUTH_CRED_HASHED, &entry->cr_flags) &&
|
||||
!test_bit(RPCAUTH_CRED_NEW, &entry->cr_flags))
|
||||
if (test_bit(RPCAUTH_CRED_NEW, &entry->cr_flags) ||
|
||||
atomic_read(&entry->cr_count) == 0)
|
||||
continue;
|
||||
cred = entry;
|
||||
break;
|
||||
}
|
||||
spin_lock(&cache->lock);
|
||||
if (test_bit(RPCAUTH_CRED_HASHED, &entry->cr_flags) == 0) {
|
||||
spin_unlock(&cache->lock);
|
||||
continue;
|
||||
}
|
||||
cred = get_rpccred(entry);
|
||||
spin_unlock(&cache->lock);
|
||||
if (cred)
|
||||
break;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
@ -621,6 +617,7 @@ rpcauth_lookup_credcache(struct rpc_auth *auth, struct auth_cred * acred,
|
||||
if (!entry->cr_ops->crmatch(acred, entry, flags))
|
||||
continue;
|
||||
cred = get_rpccred(entry);
|
||||
if (cred)
|
||||
break;
|
||||
}
|
||||
if (cred == NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user