libceph, rbd: ceph_osd_linger_request, watch/notify v2
authorIlya Dryomov <idryomov@gmail.com>
Wed, 25 May 2016 23:15:02 +0000 (01:15 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 25 May 2016 23:15:02 +0000 (01:15 +0200)
commit922dab6134178cae317ae00de86376cba59f3147
treea7047a5950b6a8505cc1e6852e4532656064fede
parentc525f03601f52c83ded046624138f2a45e0ba56c
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>
drivers/block/rbd.c
include/linux/ceph/ceph_fs.h
include/linux/ceph/osd_client.h
include/linux/ceph/rados.h
net/ceph/ceph_strings.c
net/ceph/debugfs.c
net/ceph/osd_client.c