]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cls/rgw_gc/cls_rgw_gc: read config via cls_get_config 67284/head
authorKautilya Tripathi <kautilya.tripathi@ibm.com>
Tue, 10 Feb 2026 05:31:26 +0000 (11:01 +0530)
committerKautilya Tripathi <kautilya.tripathi@ibm.com>
Mon, 23 Feb 2026 11:50:33 +0000 (17:20 +0530)
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>
src/cls/rgw_gc/cls_rgw_gc.cc

index 7f24a6479937c37e289734ff8528d529cd25856d..ecaba00cacfdb3cecfdf6a367ad587b2d7863a0d 100644 (file)
 #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;
@@ -51,7 +47,8 @@ static int cls_rgw_gc_queue_init(cls_method_context_t hctx, bufferlist *in, buff
   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);