nfsd4: no need for replay_owner in sessions case
authorJ. Bruce Fields <bfields@redhat.com>
Fri, 22 Mar 2013 21:44:19 +0000 (17:44 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 9 Apr 2013 13:08:55 +0000 (09:08 -0400)
The replay_owner will never be used in the sessions case.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4proc.c
fs/nfsd/nfs4state.c

index 609e1e21133068d40334006409b22980a3c73fdf..c97bb424f55f9a6301e9efecb44697b7b0dedaa1 100644 (file)
@@ -413,7 +413,7 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
        WARN_ON(status && open->op_created);
 out:
        nfsd4_cleanup_open_state(open, status);
-       if (open->op_openowner)
+       if (open->op_openowner && !nfsd4_has_session(cstate))
                cstate->replay_owner = &open->op_openowner->oo_owner;
        nfsd4_bump_seqid(cstate, status);
        if (!cstate->replay_owner)
index 1226ff6030bd069776acf4cd77be8ee96d715ae4..16db25dc364f83e3712378b1a2afcea2e2bd29c6 100644 (file)
@@ -3666,7 +3666,8 @@ nfs4_preprocess_seqid_op(struct nfsd4_compound_state *cstate, u32 seqid,
        if (status)
                return status;
        *stpp = openlockstateid(s);
-       cstate->replay_owner = (*stpp)->st_stateowner;
+       if (!nfsd4_has_session(cstate))
+               cstate->replay_owner = (*stpp)->st_stateowner;
 
        return nfs4_seqid_op_checks(cstate, stateid, seqid, *stpp);
 }
@@ -3858,10 +3859,9 @@ nfsd4_close(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
                oo->oo_last_closed_stid = stp;
 
        if (list_empty(&oo->oo_owner.so_stateids)) {
-               if (cstate->minorversion) {
+               if (cstate->minorversion)
                        release_openowner(oo);
-                       cstate->replay_owner = NULL;
-               } else {
+               else {
                        /*
                         * In the 4.0 case we need to keep the owners around a
                         * little while to handle CLOSE replay.