Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68b18f52 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd: make nfs4_get_existing_delegation less confusing



This doesn't "get" anything.

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
parent 0c911f54
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -900,20 +900,16 @@ void nfs4_unhash_stid(struct nfs4_stid *s)
}

/**
 * nfs4_get_existing_delegation - Discover if this delegation already exists
 * nfs4_delegation_exists - Discover if this delegation already exists
 * @clp:     a pointer to the nfs4_client we're granting a delegation to
 * @fp:      a pointer to the nfs4_file we're granting a delegation on
 *
 * Return:
 *      On success: NULL if an existing delegation was not found.
 *
 *      On error: -EAGAIN if one was previously granted to this nfs4_client
 *                 for this nfs4_file.
 *
 *      On success: true iff an existing delegation is found
 */

static int
nfs4_get_existing_delegation(struct nfs4_client *clp, struct nfs4_file *fp)
static bool
nfs4_delegation_exists(struct nfs4_client *clp, struct nfs4_file *fp)
{
	struct nfs4_delegation *searchdp = NULL;
	struct nfs4_client *searchclp = NULL;
@@ -946,15 +942,13 @@ nfs4_get_existing_delegation(struct nfs4_client *clp, struct nfs4_file *fp)
static int
hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp)
{
	int status;
	struct nfs4_client *clp = dp->dl_stid.sc_client;

	lockdep_assert_held(&state_lock);
	lockdep_assert_held(&fp->fi_lock);

	status = nfs4_get_existing_delegation(clp, fp);
	if (status)
		return status;
	if (nfs4_delegation_exists(clp, fp))
		return -EAGAIN;
	++fp->fi_delegees;
	refcount_inc(&dp->dl_stid.sc_count);
	dp->dl_stid.sc_type = NFS4_DELEG_STID;
@@ -4391,7 +4385,7 @@ static struct nfs4_delegation *
nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh,
		    struct nfs4_file *fp, struct nfs4_clnt_odstate *odstate)
{
	int status;
	int status = 0;
	struct nfs4_delegation *dp;

	if (fp->fi_had_conflict)
@@ -4399,7 +4393,8 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh,

	spin_lock(&state_lock);
	spin_lock(&fp->fi_lock);
	status = nfs4_get_existing_delegation(clp, fp);
	if (nfs4_delegation_exists(clp, fp))
		status = -EAGAIN;
	spin_unlock(&fp->fi_lock);
	spin_unlock(&state_lock);