libceph: revamp subs code, switch to SUBSCRIBE2 protocol
authorIlya Dryomov <idryomov@gmail.com>
Tue, 19 Jan 2016 15:19:06 +0000 (16:19 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 25 Mar 2016 17:51:38 +0000 (18:51 +0100)
commit82dcabad750a36a2b749889bc89c5a3188775b2e
tree26fcfa10f290b53b34ab5c3019338ca2da3a9569
parent0f9af169a1db62c33d87e4cfda46493907bd5537
libceph: revamp subs code, switch to SUBSCRIBE2 protocol

It is currently hard-coded in the mon_client that mdsmap and monmap
subs are continuous, while osdmap sub is always "onetime".  To better
handle full clusters/pools in the osd_client, we need to be able to
issue continuous osdmap subs.  Revamp subs code to allow us to specify
for each sub whether it should be continuous or not.

Although not strictly required for the above, switch to SUBSCRIBE2
protocol while at it, eliminating the ambiguity between a request for
"every map since X" and a request for "just the latest" when we don't
have a map yet (i.e. have epoch 0).  SUBSCRIBE2 feature bit is now
required - it's been supported since pre-argonaut (2010).

Move "got mdsmap" call to the end of ceph_mdsc_handle_map() - calling
in before we validate the epoch and successfully install the new map
can mess up mon_client sub state.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/mds_client.c
fs/ceph/super.c
include/linux/ceph/ceph_features.h
include/linux/ceph/ceph_fs.h
include/linux/ceph/mon_client.h
net/ceph/debugfs.c
net/ceph/mon_client.c
net/ceph/osd_client.c