sop = find_openstateowner_str(strhashval, open);
        if (sop) {
                open->op_stateowner = sop;
-               /* check for replay */
-               if (open->op_seqid == sop->so_seqid - 1){
+               if (!sop->so_confirmed) {
+                       /* Replace any unconfirmed stateowner without
+                        * even checking for replays */
+                       clp = sop->so_client;
+                       release_stateowner(sop);
+               } else if (open->op_seqid == sop->so_seqid) {
+                       /* normal case */
+                       goto renew;
+               } else if (open->op_seqid == sop->so_seqid - 1) {
+                       /* replay */
                        if (sop->so_replay.rp_buflen)
                                return NFSERR_REPLAY_ME;
                        else {
                                        " replay with no replay cache\n");
                                goto renew;
                        }
-               } else if (sop->so_confirmed) {
-                       if (open->op_seqid == sop->so_seqid)
-                               goto renew;
+               } else {
                        status = nfserr_bad_seqid;
                        goto out;
-               } else {
-                       /* If we get here, we received an OPEN for an
-                        * unconfirmed nfs4_stateowner. Since the seqid's are
-                        * different, purge the existing nfs4_stateowner, and
-                        * instantiate a new one.
-                        */
-                       clp = sop->so_client;
-                       release_stateowner(sop);
                }
        } else {
                /* nfs4_stateowner not found.