return false;
}
+ void get_cap_auths(std::vector<MDSCapAuth> *cap_auths)
+ {
+ for (const auto& grant : grants) {
+ cap_auths->emplace_back(MDSCapAuth(grant.match,
+ grant.spec.allow_read(),
+ grant.spec.allow_write()));
+ }
+ }
+
friend std::ostream &operator<<(std::ostream &out, const MDSAuthCaps &cap);
private:
std::vector<MDSCapGrant> grants;
session->get_push_seq());
if (session->info.has_feature(CEPHFS_FEATURE_MIMIC))
reply->supported_features = supported_features;
+ session->auth_caps.get_cap_auths(&reply->cap_auths);
mds->send_message_client(reply, session);
if (mdcache->is_readonly()) {
auto m = make_message<MClientSession>(CEPH_SESSION_FORCE_RO);
reply->supported_features = supported_features;
reply->metric_spec = supported_metric_spec;
}
+ session->auth_caps.get_cap_auths(&reply->cap_auths);
mds->send_message_client(reply, session);
if (mdcache->is_readonly()) {
auto m = make_message<MClientSession>(CEPH_SESSION_FORCE_RO);
reply->supported_features = supported_features;
reply->metric_spec = supported_metric_spec;
}
+ session->auth_caps.get_cap_auths(&reply->cap_auths);
mds->send_message_client(reply, session);
if (mdcache->is_readonly())
reply->supported_features = supported_features;
reply->metric_spec = supported_metric_spec;
}
+ session->auth_caps.get_cap_auths(&reply->cap_auths);
mds->send_message_client(reply, session);
mds->clog->debug() << "reconnect by " << session->info.inst << " after " << delay;
}