libceph: fix msgr backoff
authorSage Weil <sage@newdream.net>
Fri, 4 Mar 2011 20:24:28 +0000 (12:24 -0800)
committerSage Weil <sage@newdream.net>
Fri, 4 Mar 2011 20:24:28 +0000 (12:24 -0800)
commit60bf8bf8815e6adea4c1d0423578c3b8000e2ec8
treece7140c32a3f177816f4029a88eb99e15bda6943
parent692d20f576fb26f62c83f80dbf3ea899998391b7
libceph: fix msgr backoff

With commit f363e45f we replaced a bunch of hacky workqueue mutual
exclusion logic with the WQ_NON_REENTRANT flag.  One pieces of fallout is
that the exponential backoff breaks in certain cases:

 * con_work attempts to connect.
 * we get an immediate failure, and the socket state change handler queues
   immediate work.
 * con_work calls con_fault, we decide to back off, but can't queue delayed
   work.

In this case, we add a BACKOFF bit to make con_work reschedule delayed work
next time it runs (which should be immediately).

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