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

Commit 4d71ab87 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: split up find_stateid



Minor cleanup.

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 4581d140
Loading
Loading
Loading
Loading
+21 −13
Original line number Original line Diff line number Diff line
@@ -1068,21 +1068,29 @@ same_stateid(stateid_t *id_one, stateid_t *id_two)
	return id_one->si_fileid == id_two->si_fileid;
	return id_one->si_fileid == id_two->si_fileid;
}
}


static struct nfs4_stateid *find_stateid(stateid_t *t, int flags)
static struct nfs4_stateid *find_stateid(stateid_t *t)
{
{
	struct nfs4_stateid *s;
	struct nfs4_stateid *s;
	unsigned int hashval;
	unsigned int hashval;


	hashval = stateid_hashval(t->si_stateownerid, t->si_fileid);
	hashval = stateid_hashval(t->si_stateownerid, t->si_fileid);
	list_for_each_entry(s, &stateid_hashtbl[hashval], st_hash) {
	list_for_each_entry(s, &stateid_hashtbl[hashval], st_hash)
		if (!same_stateid(&s->st_stateid, t))
		if (same_stateid(&s->st_stateid, t))
			continue;
			return s;
		if (flags & LOCK_STATE && s->st_type != NFS4_LOCK_STID)
	return NULL;
	return NULL;
		if (flags & OPEN_STATE && s->st_type != NFS4_OPEN_STID)
}

static struct nfs4_stateid *find_stateid_by_type(stateid_t *t, int flags)
{
	struct nfs4_stateid *s;

	s = find_stateid(t);
	if (!s)
		return NULL;
		return NULL;
	if (flags & LOCK_STATE && s->st_type == NFS4_LOCK_STID)
		return s;
	if (flags & OPEN_STATE && s->st_type == NFS4_OPEN_STID)
		return s;
		return s;
		}
	return NULL;
	return NULL;
}
}


@@ -3241,7 +3249,7 @@ __be32 nfs4_validate_stateid(stateid_t *stateid, bool has_session)
		goto out;
		goto out;


	status = nfserr_expired;
	status = nfserr_expired;
	stp = find_stateid(stateid, 0);
	stp = find_stateid(stateid);
	if (!stp)
	if (!stp)
		goto out;
		goto out;
	status = nfserr_bad_stateid;
	status = nfserr_bad_stateid;
@@ -3306,7 +3314,7 @@ nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate,
			BUG_ON(!*filpp);
			BUG_ON(!*filpp);
		}
		}
	} else { /* open or lock stateid */
	} else { /* open or lock stateid */
		stp = find_stateid(stateid, flags);
		stp = find_stateid(stateid);
		if (!stp)
		if (!stp)
			goto out;
			goto out;
		status = nfserr_bad_stateid;
		status = nfserr_bad_stateid;
@@ -3381,7 +3389,7 @@ nfsd4_free_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
		goto out;
		goto out;
	}
	}


	stp = find_stateid(stateid, 0);
	stp = find_stateid(stateid);
	if (!stp) {
	if (!stp) {
		ret = nfserr_bad_stateid;
		ret = nfserr_bad_stateid;
		goto out;
		goto out;
@@ -3440,7 +3448,7 @@ nfs4_preprocess_seqid_op(struct nfsd4_compound_state *cstate, u32 seqid,
	* the confirmed flag is incorrecly set, or the generation 
	* the confirmed flag is incorrecly set, or the generation 
	* number is incorrect.  
	* number is incorrect.  
	*/
	*/
	*stpp = find_stateid(stateid, flags);
	*stpp = find_stateid_by_type(stateid, flags);
	if (*stpp == NULL)
	if (*stpp == NULL)
		return nfserr_expired;
		return nfserr_expired;