]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
fixed connection sequence
authorPatience Warnick <patience@cranium.pelton.net>
Tue, 1 Apr 2008 21:28:02 +0000 (14:28 -0700)
committerPatience Warnick <patience@cranium.pelton.net>
Tue, 1 Apr 2008 21:28:02 +0000 (14:28 -0700)
src/kernel/messenger.c

index 31db6a0dec683d53aee24e3451cf18cc68b3f69c..8965aecb0902f33d6fa598955b58a14fe2640506 100644 (file)
@@ -914,7 +914,7 @@ static void __replace_connection(struct ceph_messenger *msgr, struct ceph_connec
        }
        spin_unlock(&old->out_queue_lock);
 
-       new->connect_seq = old->connect_seq;
+       new->connect_seq =  le32_to_cpu(new->in_connect_seq);
        new->out_seq = old->out_seq;
 
        /* replace list entry */
@@ -974,13 +974,11 @@ static void process_accept(struct ceph_connection *con)
                                   tell peer to wait for our outgoing 
                                   connection to go through */
                                prepare_write_accept_reply(con, &tag_wait);
-                               goto done;
                        }
                } else if (existing->connect_seq == 0 && 
                          (peer_cseq > existing->connect_seq)) {
                        /* we reset and already reconnecting */
                        prepare_write_accept_reply(con, &tag_reset);
-                       goto done;
                } else {
                        /* reconnect case, replace connection */
                        __replace_connection(msgr, existing, con);
@@ -993,9 +991,9 @@ static void process_accept(struct ceph_connection *con)
                dout(20, "process_accept no existing connection, connection now OPEN\n");
                __add_connection(msgr, con);
                 set_bit(OPEN, &con->state);
+               con->connect_seq = peer_cseq + 1;
                prepare_write_accept_reply(con, &tag_ready);
        }
-done:
        spin_unlock(&msgr->con_lock);
        /* queue write */
        ceph_queue_write(con);