diff options
author | Sage Weil <sage@newdream.net> | 2011-03-04 12:24:28 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2011-03-04 12:24:28 -0800 |
commit | 60bf8bf8815e6adea4c1d0423578c3b8000e2ec8 (patch) | |
tree | ce7140c32a3f177816f4029a88eb99e15bda6943 /include/linux/ceph | |
parent | 692d20f576fb26f62c83f80dbf3ea899998391b7 (diff) | |
download | kernel-common-60bf8bf8815e6adea4c1d0423578c3b8000e2ec8.tar.gz kernel-common-60bf8bf8815e6adea4c1d0423578c3b8000e2ec8.tar.bz2 kernel-common-60bf8bf8815e6adea4c1d0423578c3b8000e2ec8.zip |
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>
Diffstat (limited to 'include/linux/ceph')
-rw-r--r-- | include/linux/ceph/messenger.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/ceph/messenger.h b/include/linux/ceph/messenger.h index c3011beac30d..eb31e108a64d 100644 --- a/include/linux/ceph/messenger.h +++ b/include/linux/ceph/messenger.h @@ -123,6 +123,7 @@ struct ceph_msg_pos { #define SOCK_CLOSED 11 /* socket state changed to closed */ #define OPENING 13 /* open connection w/ (possibly new) peer */ #define DEAD 14 /* dead, about to kfree */ +#define BACKOFF 15 /* * A single connection with another host. |