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

Commit fd911011 authored by Trond Myklebust's avatar Trond Myklebust Committed by J. Bruce Fields
Browse files

nfsd: Migrate the stateid reference into nfs4_lookup_stateid()



Allow nfs4_lookup_stateid to take the stateid reference, instead
of having all the callers do so.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 4cbfc9f7
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -4170,6 +4170,8 @@ nfsd4_lookup_stateid(struct nfsd4_compound_state *cstate,
	*s = find_stateid_by_type(cstate->clp, stateid, typemask);
	if (!*s)
		return nfserr_bad_stateid;
	/* FIXME: move into find_stateid_by_type */
	atomic_inc(&(*s)->sc_count);
	return nfs_ok;
}

@@ -4204,7 +4206,7 @@ nfs4_preprocess_stateid_op(struct net *net, struct nfsd4_compound_state *cstate,
				NFS4_DELEG_STID|NFS4_OPEN_STID|NFS4_LOCK_STID,
				&s, nn);
	if (status)
		goto out;
		goto unlock_state;
	status = check_stateid_generation(stateid, &s->sc_stateid, nfsd4_has_session(cstate));
	if (status)
		goto out;
@@ -4253,6 +4255,8 @@ nfs4_preprocess_stateid_op(struct net *net, struct nfsd4_compound_state *cstate,
	if (file)
		*filpp = file;
out:
	nfs4_put_stid(s);
unlock_state:
	nfs4_unlock_state();
	return status;
}
@@ -4390,11 +4394,10 @@ nfs4_preprocess_seqid_op(struct nfsd4_compound_state *cstate, u32 seqid,
		cstate->replay_owner = stp->st_stateowner;

	status = nfs4_seqid_op_checks(cstate, stateid, seqid, stp);
	if (!status) {
		/* FIXME: move into find_stateid_by_type */
		atomic_inc(&stp->st_stid.sc_count);
	if (!status)
		*stpp = stp;
	}
	else
		nfs4_put_stid(&stp->st_stid);
	return status;
}

@@ -4623,9 +4626,11 @@ nfsd4_delegreturn(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
	dp = delegstateid(s);
	status = check_stateid_generation(stateid, &dp->dl_stid.sc_stateid, nfsd4_has_session(cstate));
	if (status)
		goto out;
		goto put_stateid;

	destroy_delegation(dp);
put_stateid:
	nfs4_put_stid(&dp->dl_stid);
out:
	nfs4_unlock_state();