Skip to content

Commit

Permalink
ceph: allow connection to be reopened by fault callback
Browse files Browse the repository at this point in the history
Fix the messenger to allow a ceph_con_open() during the fault callback.
Previously the work wasn't getting queued on the connection because the
fault path avoids requeued work (normally spurious).  Loop on reopening by
checking for the OPENING state bit.

This fixes OSD reconnects when a TCP connection drops.

Signed-off-by: Sage Weil <sage@newdream.net>
  • Loading branch information
Sage Weil committed Feb 17, 2010
1 parent 153a008 commit e2663ab
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion fs/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1808,7 +1808,7 @@ static void con_work(struct work_struct *work)
clear_bit(BUSY, &con->state);
dout("con->state=%lu\n", con->state);
if (test_bit(QUEUED, &con->state)) {
if (!backoff) {
if (!backoff || test_bit(OPENING, &con->state)) {
dout("con_work %p QUEUED reset, looping\n", con);
goto more;
}
Expand Down

0 comments on commit e2663ab

Please sign in to comment.