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

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

nfsd4: move double-confirm test to open_confirm



I don't see the point of having this check in nfs4_preprocess_seqid_op()
when it's only needed by the one caller.

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 77eaae8d
Loading
Loading
Loading
Loading
+5 −7
Original line number Original line Diff line number Diff line
@@ -3434,11 +3434,6 @@ nfs4_preprocess_seqid_op(struct nfsd4_compound_state *cstate, u32 seqid,
	if (status)
	if (status)
		return status;
		return status;


	if (sop->so_confirmed && flags & CONFIRM) {
		dprintk("NFSD: preprocess_seqid_op: expected"
				" unconfirmed stateowner!\n");
		return nfserr_bad_stateid;
	}
	if (!sop->so_confirmed && !(flags & CONFIRM)) {
	if (!sop->so_confirmed && !(flags & CONFIRM)) {
		dprintk("NFSD: preprocess_seqid_op: stateowner not"
		dprintk("NFSD: preprocess_seqid_op: stateowner not"
				" confirmed yet!\n");
				" confirmed yet!\n");
@@ -3474,8 +3469,10 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
					CONFIRM | OPEN_STATE, &stp);
					CONFIRM | OPEN_STATE, &stp);
	if (status)
	if (status)
		goto out;
		goto out;

	sop = stp->st_stateowner;
	sop = stp->st_stateowner;
	status = nfserr_bad_stateid;
	if (sop->so_confirmed)
		goto out;
	sop->so_confirmed = 1;
	sop->so_confirmed = 1;
	update_stateid(&stp->st_stateid);
	update_stateid(&stp->st_stateid);
	memcpy(&oc->oc_resp_stateid, &stp->st_stateid, sizeof(stateid_t));
	memcpy(&oc->oc_resp_stateid, &stp->st_stateid, sizeof(stateid_t));
@@ -3483,6 +3480,7 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
		__func__, oc->oc_seqid, STATEID_VAL(&stp->st_stateid));
		__func__, oc->oc_seqid, STATEID_VAL(&stp->st_stateid));


	nfsd4_create_clid_dir(sop->so_client);
	nfsd4_create_clid_dir(sop->so_client);
	status = nfs_ok;
out:
out:
	if (!cstate->replay_owner)
	if (!cstate->replay_owner)
		nfs4_unlock_state();
		nfs4_unlock_state();