|
@@ -4390,8 +4390,11 @@ 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)
|
|
|
+ if (!status) {
|
|
|
+ /* FIXME: move into find_stateid_by_type */
|
|
|
+ atomic_inc(&stp->st_stid.sc_count);
|
|
|
*stpp = stp;
|
|
|
+ }
|
|
|
return status;
|
|
|
}
|
|
|
|
|
@@ -4400,16 +4403,18 @@ static __be32 nfs4_preprocess_confirmed_seqid_op(struct nfsd4_compound_state *cs
|
|
|
{
|
|
|
__be32 status;
|
|
|
struct nfs4_openowner *oo;
|
|
|
+ struct nfs4_ol_stateid *stp;
|
|
|
|
|
|
status = nfs4_preprocess_seqid_op(cstate, seqid, stateid,
|
|
|
- NFS4_OPEN_STID, stpp, nn);
|
|
|
+ NFS4_OPEN_STID, &stp, nn);
|
|
|
if (status)
|
|
|
return status;
|
|
|
- /* FIXME: move into nfs4_preprocess_seqid_op */
|
|
|
- atomic_inc(&(*stpp)->st_stid.sc_count);
|
|
|
- oo = openowner((*stpp)->st_stateowner);
|
|
|
- if (!(oo->oo_flags & NFS4_OO_CONFIRMED))
|
|
|
+ oo = openowner(stp->st_stateowner);
|
|
|
+ if (!(oo->oo_flags & NFS4_OO_CONFIRMED)) {
|
|
|
+ nfs4_put_stid(&stp->st_stid);
|
|
|
return nfserr_bad_stateid;
|
|
|
+ }
|
|
|
+ *stpp = stp;
|
|
|
return nfs_ok;
|
|
|
}
|
|
|
|
|
@@ -4436,8 +4441,6 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
NFS4_OPEN_STID, &stp, nn);
|
|
|
if (status)
|
|
|
goto out;
|
|
|
- /* FIXME: move into nfs4_preprocess_seqid_op */
|
|
|
- atomic_inc(&stp->st_stid.sc_count);
|
|
|
oo = openowner(stp->st_stateowner);
|
|
|
status = nfserr_bad_stateid;
|
|
|
if (oo->oo_flags & NFS4_OO_CONFIRMED)
|
|
@@ -4587,8 +4590,6 @@ nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
nfsd4_bump_seqid(cstate, status);
|
|
|
if (status)
|
|
|
goto out;
|
|
|
- /* FIXME: move into nfs4_preprocess_seqid_op */
|
|
|
- atomic_inc(&stp->st_stid.sc_count);
|
|
|
update_stateid(&stp->st_stid.sc_stateid);
|
|
|
memcpy(&close->cl_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t));
|
|
|
|
|
@@ -4944,9 +4945,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
lock->lk_old_lock_seqid,
|
|
|
&lock->lk_old_lock_stateid,
|
|
|
NFS4_LOCK_STID, &lock_stp, nn);
|
|
|
- /* FIXME: move into nfs4_preprocess_seqid_op */
|
|
|
- if (!status)
|
|
|
- atomic_inc(&lock_stp->st_stid.sc_count);
|
|
|
}
|
|
|
if (status)
|
|
|
goto out;
|
|
@@ -5175,8 +5173,6 @@ nfsd4_locku(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|
|
&stp, nn);
|
|
|
if (status)
|
|
|
goto out;
|
|
|
- /* FIXME: move into nfs4_preprocess_seqid_op */
|
|
|
- atomic_inc(&stp->st_stid.sc_count);
|
|
|
filp = find_any_file(stp->st_stid.sc_file);
|
|
|
if (!filp) {
|
|
|
status = nfserr_lock_range;
|