nfsd: move nfsd4_cstate_assign_replay() earlier in open handling.
[linux-2.6-block.git] / fs / nfsd / nfs4state.c
index 65225b3d1d93c9e0d3e1d6fc9a9a2cc09ecf7bbc..43bdff49aa03b7ea1af040076a6d29650a1c7f98 100644 (file)
@@ -5346,6 +5346,7 @@ nfsd4_process_open1(struct nfsd4_compound_state *cstate,
        open->op_openowner = oo;
        if (!oo)
                return nfserr_jukebox;
+       nfsd4_cstate_assign_replay(cstate, &oo->oo_owner);
        status = nfsd4_check_seqid(cstate, &oo->oo_owner, open->op_seqid);
        if (status)
                return status;
@@ -6120,12 +6121,8 @@ out:
 void nfsd4_cleanup_open_state(struct nfsd4_compound_state *cstate,
                              struct nfsd4_open *open)
 {
-       if (open->op_openowner) {
-               struct nfs4_stateowner *so = &open->op_openowner->oo_owner;
-
-               nfsd4_cstate_assign_replay(cstate, so);
-               nfs4_put_stateowner(so);
-       }
+       if (open->op_openowner)
+               nfs4_put_stateowner(&open->op_openowner->oo_owner);
        if (open->op_file)
                kmem_cache_free(file_slab, open->op_file);
        if (open->op_stp)