Currently there is no easy way to gain access to global configuration
from CLS (objclass) code. This adds a new call to the CLS interface
that returns a "const ConfigProxy&" from which configuration can be
accessed.
NOTE: Working code to do provide this functionality in crimson is not
provided.
Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
return ceph_release_t::nautilus;
}
+const ConfigProxy& cls_get_config(cls_method_context_t hctx)
+{
+ // FIXME ; segfault if ever called
+ static ConfigProxy* dummy = nullptr;
+ return *dummy;
+}
+
int cls_get_snapset_seq(cls_method_context_t hctx, uint64_t *snap_seq)
{
return 0;
extern uint64_t cls_get_client_features(cls_method_context_t hctx);
extern ceph_release_t cls_get_required_osd_release(cls_method_context_t hctx);
extern ceph_release_t cls_get_min_compatible_client(cls_method_context_t hctx);
+extern const ConfigProxy& cls_get_config(cls_method_context_t hctx);
/* helpers */
extern void cls_cxx_subop_version(cls_method_context_t hctx, std::string *s);
return ctx->pg->get_osdmap()->get_require_min_compat_client();
}
+const ConfigProxy& cls_get_config(cls_method_context_t hctx)
+{
+ PrimaryLogPG::OpContext *ctx = *(PrimaryLogPG::OpContext **)hctx;
+ return ctx->pg->get_cct()->_conf;
+}
+
int cls_get_snapset_seq(cls_method_context_t hctx, uint64_t *snap_seq) {
PrimaryLogPG::OpContext *ctx = *(PrimaryLogPG::OpContext **)hctx;
if (!ctx->new_obs.exists || (ctx->new_obs.oi.is_whiteout() &&