Skip to content

Commit

Permalink
ceph: fix connection fault con_work reentrancy problem
Browse files Browse the repository at this point in the history
The messenger fault was clearing the BUSY bit, for reasons unclear.  This
made it possible for the con->ops->fault function to reopen the connection,
and requeue work in the workqueue--even though the current thread was
already in con_work.

This avoids a problem where the client busy loops with connection failures
on an unreachable OSD, but doesn't address the root cause of that problem.

Signed-off-by: Sage Weil <sage@newdream.net>
  • Loading branch information
Sage Weil committed Mar 23, 2010
1 parent e4cb4cb commit 3c3f2e3
Showing 1 changed file with 0 additions and 2 deletions.
2 changes: 0 additions & 2 deletions fs/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1836,8 +1836,6 @@ static void ceph_fault(struct ceph_connection *con)
goto out;
}

clear_bit(BUSY, &con->state); /* to avoid an improbable race */

mutex_lock(&con->mutex);
if (test_bit(CLOSED, &con->state))
goto out_unlock;
Expand Down

0 comments on commit 3c3f2e3

Please sign in to comment.