libceph: fix msgr standby handling
authorSage Weil <sage@newdream.net>
Fri, 4 Mar 2011 20:25:05 +0000 (12:25 -0800)
committerSage Weil <sage@newdream.net>
Fri, 4 Mar 2011 20:25:05 +0000 (12:25 -0800)
commite00de341fdb76c955703b4438100f9933c452b7f
treeab776a5e46f1cb5acaa6b26484763259040f470c
parente76661d0a59e53e5cc4dccbe4b755d1dc8a968ec
libceph: fix msgr standby handling

The standby logic used to be pretty dependent on the work requeueing
behavior that changed when we switched to WQ_NON_REENTRANT.  It was also
very fragile.

Restructure things so that:
 - We clear WRITE_PENDING when we set STANDBY.  This ensures we will
   requeue work when we wake up later.
 - con_work backs off if STANDBY is set.  There is nothing to do if we are
   in standby.
 - clear_standby() helper is called by both con_send() and con_keepalive(),
   the two actions that can wake us up again.  Move the connect_seq++
   logic here.

Signed-off-by: Sage Weil <sage@newdream.net>
net/ceph/messenger.c