mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
libceph, rbd: ceph_osd_linger_request, watch/notify v2
This adds support and switches rbd to a new, more reliable version of watch/notify protocol. As with the OSD client update, this is mostly about getting the right structures linked into the right places so that reconnects are properly sent when needed. watch/notify v2 also requires sending regular pings to the OSDs - send_linger_ping(). A major change from the old watch/notify implementation is the introduction of ceph_osd_linger_request - linger requests no longer piggy back on ceph_osd_request. ceph_osd_event has been merged into ceph_osd_linger_request. All the details are now hidden within libceph, the interface consists of a simple pair of watch/unwatch functions and ceph_osdc_notify_ack(). ceph_osdc_watch() does return ceph_osd_linger_request, but only to keep the lifetime management simple. ceph_osdc_notify_ack() accepts an optional data payload, which is relayed back to the notifier. Portions of this patch are loosely based on work by Douglas Fuller <dfuller@redhat.com> and Mike Christie <michaelc@cs.wisc.edu>. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
c525f03601
commit
922dab6134
7 changed files with 1068 additions and 432 deletions
|
@ -27,6 +27,22 @@ __CEPH_FORALL_OSD_OPS(GENERATE_CASE)
|
|||
}
|
||||
}
|
||||
|
||||
const char *ceph_osd_watch_op_name(int o)
|
||||
{
|
||||
switch (o) {
|
||||
case CEPH_OSD_WATCH_OP_UNWATCH:
|
||||
return "unwatch";
|
||||
case CEPH_OSD_WATCH_OP_WATCH:
|
||||
return "watch";
|
||||
case CEPH_OSD_WATCH_OP_RECONNECT:
|
||||
return "reconnect";
|
||||
case CEPH_OSD_WATCH_OP_PING:
|
||||
return "ping";
|
||||
default:
|
||||
return "???";
|
||||
}
|
||||
}
|
||||
|
||||
const char *ceph_osd_state_name(int s)
|
||||
{
|
||||
switch (s) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue