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

Commit 36279ac1 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: assume test_stateid always has session



Test_stateid is 4.1-only and only allowed after a sequence operation, so
this check is unnecessary.

Cc: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 6136d2b4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -3256,7 +3256,7 @@ static int check_stateid_generation(stateid_t *in, stateid_t *ref, bool has_sess
	return nfserr_old_stateid;
}

__be32 nfs4_validate_stateid(stateid_t *stateid, bool has_session)
__be32 nfs4_validate_stateid(stateid_t *stateid)
{
	struct nfs4_stid *s;
	struct nfs4_ol_stateid *ols;
@@ -3268,7 +3268,7 @@ __be32 nfs4_validate_stateid(stateid_t *stateid, bool has_session)
	s = find_stateid(stateid);
	if (!s)
		 return nfserr_stale_stateid;
	status = check_stateid_generation(stateid, &s->sc_stateid, has_session);
	status = check_stateid_generation(stateid, &s->sc_stateid, 1);
	if (status)
		return status;
	if (!(s->sc_type & (NFS4_OPEN_STID | NFS4_LOCK_STID)))
@@ -3374,7 +3374,7 @@ __be32
nfsd4_test_stateid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
		   struct nfsd4_test_stateid *test_stateid)
{
	test_stateid->ts_has_session = nfsd4_has_session(cstate);
	/* real work is done during encoding */
	return nfs_ok;
}

+1 −1
Original line number Diff line number Diff line
@@ -3302,7 +3302,7 @@ nfsd4_encode_test_stateid(struct nfsd4_compoundres *resp, int nfserr,
	nfs4_lock_state();
	for (i = 0; i < test_stateid->ts_num_ids; i++) {
		nfsd4_decode_stateid(argp, &si);
		valid = nfs4_validate_stateid(&si, test_stateid->ts_has_session);
		valid = nfs4_validate_stateid(&si);
		RESERVE_SPACE(4);
		*p++ = htonl(valid);
		resp->p = p;
+1 −1
Original line number Diff line number Diff line
@@ -508,7 +508,7 @@ extern void nfsd4_recdir_purge_old(void);
extern int nfsd4_create_clid_dir(struct nfs4_client *clp);
extern void nfsd4_remove_clid_dir(struct nfs4_client *clp);
extern void release_session_client(struct nfsd4_session *);
extern __be32 nfs4_validate_stateid(stateid_t *, bool);
extern __be32 nfs4_validate_stateid(stateid_t *);
extern void nfsd4_purge_closed_stateid(struct nfs4_stateowner *);

#endif   /* NFSD4_STATE_H */
+0 −1
Original line number Diff line number Diff line
@@ -343,7 +343,6 @@ struct nfsd4_saved_compoundargs {

struct nfsd4_test_stateid {
	__be32		ts_num_ids;
	bool		ts_has_session;
	struct nfsd4_compoundargs *ts_saved_args;
	struct nfsd4_saved_compoundargs ts_savedp;
};