libceph, ceph: get and handle cluster maps with addrvecs
authorIlya Dryomov <idryomov@gmail.com>
Fri, 30 Oct 2020 12:30:51 +0000 (13:30 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 14 Dec 2020 22:21:50 +0000 (23:21 +0100)
commita5cbd5fc22d5043a8a76e15d75d031fe24d1f69c
tree2379298419dcbfaddef2d7bbd1cba86ba68c8bd4
parent8921f25116af3081fb56871feb93f2dcaf52c722
libceph, ceph: get and handle cluster maps with addrvecs

In preparation for msgr2, make the cluster send us maps with addrvecs
including both LEGACY and MSGR2 addrs instead of a single LEGACY addr.
This means advertising support for SERVER_NAUTILUS and also some older
features: SERVER_MIMIC, MONENC and MONNAMES.

MONNAMES and MONENC are actually pre-argonaut, we just never updated
ceph_monmap_decode() for them.  Decoding is unconditional, see commit
23c625ce3065 ("libceph: assume argonaut on the server side").

SERVER_MIMIC doesn't bear any meaning for the kernel client.

Since ceph_decode_entity_addrvec() is guarded by encoding version
checks (and in msgr2 case it is guarded implicitly by the fact that
server is speaking msgr2), we assume MSG_ADDR2 for it.

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