CEPH_FEATURE_OSD_RECOVERY_DELETES | \
CEPH_FEATURE_SERVER_MIMIC | \
CEPH_FEATURE_RECOVERY_RESERVATION_2 | \
+ CEPH_FEATURE_SERVER_NAUTILUS | \
+ CEPH_FEATURE_CEPHX_V2 | \
0ULL)
#define CEPH_FEATURES_SUPPORTED_DEFAULT CEPH_FEATURES_ALL
required_features |= CEPH_FEATUREMASK_SERVER_LUMINOUS;
}
if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_MIMIC)) {
- required_features |= CEPH_FEATUREMASK_SERVER_MIMIC;
+ required_features |= CEPH_FEATUREMASK_SERVER_MIMIC |
+ CEPH_FEATUREMASK_CEPHX_V2;
}
+ if (features.incompat.contains(CEPH_MON_FEATURE_INCOMPAT_NAUTILUS)) {
+ required_features |= CEPH_FEATUREMASK_SERVER_NAUTILUS;
+ }
// monmap
if (monmap->get_required_features().contains_all(
}
if (monmap->get_required_features().contains_all(
ceph::features::mon::FEATURE_MIMIC)) {
- required_features |= CEPH_FEATUREMASK_SERVER_MIMIC;
+ required_features |= CEPH_FEATUREMASK_SERVER_MIMIC |
+ CEPH_FEATUREMASK_CEPHX_V2;
}
+ if (monmap->get_required_features().contains_all(
+ ceph::features::mon::FEATURE_NAUTILUS)) {
+ required_features |= CEPH_FEATUREMASK_SERVER_NAUTILUS;
+ }
dout(10) << __func__ << " required_features " << required_features << dendl;
}
recv_start(0), recv_end(0),
last_active(ceph::coarse_mono_clock::now()),
inactive_timeout_us(cct->_conf->ms_tcp_read_timeout*1000*1000),
- msg_left(0), cur_msg_size(0), got_bad_auth(false), authorizer(NULL),
+ msg_left(0), cur_msg_size(0), got_bad_auth(false),
- authorizer(NULL), replacing(false),
++ authorizer(NULL),
+ msgr2(m2), replacing(false),
is_reset_from_peer(false), once_ready(false), state_buffer(NULL), state_offset(0),
worker(w), center(&w->center)
{
uint64_t state_offset;
Worker *worker;
EventCenter *center;
- ceph::shared_ptr<AuthSessionHandler> session_security;
+ std::shared_ptr<AuthSessionHandler> session_security;
+ std::unique_ptr<AuthAuthorizerChallenge> authorizer_challenge; // accept side
public:
// used by eventcallback