Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 359686
b: refs/heads/master
c: f20a39f
h: refs/heads/master
v: v3
  • Loading branch information
Alex Elder committed Feb 25, 2013
1 parent ab6fa47 commit ac1717b
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 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: 154171678989950f6c392e126fa8006a145ed1cc
refs/heads/master: f20a39fd6e6356b4cf3c1650c4dc6c66c99d8bae
37 changes: 24 additions & 13 deletions trunk/net/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -2345,6 +2345,24 @@ static bool con_sock_closed(struct ceph_connection *con)
return true;
}

static bool con_backoff(struct ceph_connection *con)
{
int ret;

if (!con_flag_test_and_clear(con, CON_FLAG_BACKOFF))
return false;

ret = queue_con_delay(con, round_jiffies_relative(con->delay));
if (ret) {
dout("%s: con %p FAILED to back off %lu\n", __func__,
con, con->delay);
BUG_ON(ret == -ENOENT);
con_flag_set(con, CON_FLAG_BACKOFF);
}

return true;
}

/*
* Do some work on a connection. Drop a connection ref when we're done.
*/
Expand All @@ -2356,21 +2374,14 @@ static void con_work(struct work_struct *work)

mutex_lock(&con->mutex);
restart:
if (con_sock_closed(con))
if (con_sock_closed(con)) {
dout("%s: con %p SOCK_CLOSED\n", __func__, con);
goto fault;

if (con_flag_test_and_clear(con, CON_FLAG_BACKOFF)) {
dout("con_work %p backing off\n", con);
ret = queue_con_delay(con, round_jiffies_relative(con->delay));
if (ret) {
dout("con_work %p FAILED to back off %lu\n", con,
con->delay);
BUG_ON(ret == -ENOENT);
con_flag_set(con, CON_FLAG_BACKOFF);
}
}
if (con_backoff(con)) {
dout("%s: con %p BACKOFF\n", __func__, con);
goto done;
}

if (con->state == CON_STATE_STANDBY) {
dout("con_work %p STANDBY\n", con);
goto done;
Expand All @@ -2381,7 +2392,7 @@ static void con_work(struct work_struct *work)
goto done;
}
if (con->state == CON_STATE_PREOPEN) {
dout("con_work OPENING\n");
dout("%s: con %p OPENING\n", __func__, con);
BUG_ON(con->sock);
}

Expand Down

0 comments on commit ac1717b

Please sign in to comment.