Commit https://github.com/ceph/ceph/commit/
3877c1e37f2fa4e1574b57f05132288f210835a7
added new way to let CLS gain access to global configuration (`g_ceph_context`).
`cls_rgw_gc_queue_init` method is not using the new CLS call of `cls_get_config`
but instead directly uses `g_ceph_context`.
Crimson OSD implementation does **not** support `g_ceph_context` which results in a (SIGSEGV)
crash due to null access. Switching to `cls_get_config`, similarly to `cls_rgw.cc`, would allow
both OSD implementations to access the conf safely.
The above approach is well-defined due to the two orthogonal implementations of objclass.cc.
Classical OSD uses `src/osd/objclass.cc` While Crimson OSD uses `src/crimson/osd/objclass.cc`.
Fixes: https://tracker.ceph.com/issues/74844
Signed-off-by: Kautilya Tripathi <kautilya.tripathi@ibm.com>
#include "cls/rgw_gc/cls_rgw_gc_const.h"
#include "cls/queue/cls_queue_src.h"
-#include "common/ceph_context.h"
-#include "global/global_context.h"
-
-
#define GC_LIST_DEFAULT_MAX 128
using std::string;
CLS_LOG(10, "INFO: cls_rgw_gc_queue_init: queue size is %lu\n", op.size);
init_op.queue_size = op.size;
- init_op.max_urgent_data_size = g_ceph_context->_conf->rgw_gc_max_deferred_entries_size;
+ const auto& conf = cls_get_config(hctx);
+ init_op.max_urgent_data_size = conf->rgw_gc_max_deferred_entries_size;
encode(urgent_data, init_op.bl_urgent_data);
return queue_init(hctx, init_op);