Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 320299
b: refs/heads/master
c: 7593af9
h: refs/heads/master
i:
  320297: 806d985
  320295: a9d9564
v: v3
  • Loading branch information
Alex Elder authored and Sage Weil committed Jul 6, 2012
1 parent fb8b9eb commit 5ab5e61
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ab166d5aa3bc036fba7efaca6e4e43a7e9510acf
refs/heads/master: 7593af920baac37752190a0db703d2732bed4a3b
52 changes: 28 additions & 24 deletions trunk/net/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1559,7 +1559,6 @@ static int process_connect(struct ceph_connection *con)
return -1;
}
clear_bit(NEGOTIATING, &con->state);
clear_bit(CONNECTING, &con->state);
set_bit(CONNECTED, &con->state);
con->peer_global_seq = le32_to_cpu(con->in_reply.global_seq);
con->connect_seq++;
Expand Down Expand Up @@ -2000,7 +1999,8 @@ static int try_write(struct ceph_connection *con)
}

do_next:
if (!test_bit(CONNECTING, &con->state)) {
if (!test_bit(CONNECTING, &con->state) &&
!test_bit(NEGOTIATING, &con->state)) {
/* is anything else pending? */
if (!list_empty(&con->out_queue)) {
prepare_write_message(con);
Expand Down Expand Up @@ -2057,25 +2057,29 @@ static int try_read(struct ceph_connection *con)
}

if (test_bit(CONNECTING, &con->state)) {
if (!test_bit(NEGOTIATING, &con->state)) {
dout("try_read connecting\n");
ret = read_partial_banner(con);
if (ret <= 0)
goto out;
ret = process_banner(con);
if (ret < 0)
goto out;

/* Banner is good, exchange connection info */
ret = prepare_write_connect(con);
if (ret < 0)
goto out;
prepare_read_connect(con);
set_bit(NEGOTIATING, &con->state);

/* Send connection info before awaiting response */
dout("try_read connecting\n");
ret = read_partial_banner(con);
if (ret <= 0)
goto out;
}
ret = process_banner(con);
if (ret < 0)
goto out;

clear_bit(CONNECTING, &con->state);
set_bit(NEGOTIATING, &con->state);

/* Banner is good, exchange connection info */
ret = prepare_write_connect(con);
if (ret < 0)
goto out;
prepare_read_connect(con);

/* Send connection info before awaiting response */
goto out;
}

if (test_bit(NEGOTIATING, &con->state)) {
dout("try_read negotiating\n");
ret = read_partial_connect(con);
if (ret <= 0)
goto out;
Expand Down Expand Up @@ -2197,12 +2201,12 @@ static void con_work(struct work_struct *work)
if (test_and_clear_bit(SOCK_CLOSED, &con->flags)) {
if (test_and_clear_bit(CONNECTED, &con->state))
con->error_msg = "socket closed";
else if (test_and_clear_bit(CONNECTING, &con->state)) {
clear_bit(NEGOTIATING, &con->state);
else if (test_and_clear_bit(NEGOTIATING, &con->state))
con->error_msg = "negotiation failed";
else if (test_and_clear_bit(CONNECTING, &con->state))
con->error_msg = "connection failed";
} else {
else
con->error_msg = "unrecognized con state";
}
goto fault;
}

Expand Down

0 comments on commit 5ab5e61

Please sign in to comment.