From: Casey Bodley Date: Thu, 1 Sep 2022 15:08:06 +0000 (-0400) Subject: rgw: fix d3n crash in StoreManager::get_config() X-Git-Tag: v18.0.0~85^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=afd799eae1f3d4a35f28db6a93e700c785c91a9f;p=ceph.git rgw: fix d3n crash in StoreManager::get_config() config options with `type: size` are not actually `size_t` but `uint64_t`, so accessing them with `get_val()` leads to a `bad_variant_access` exception. use the `Option::size_t` type instead Fixes: https://tracker.ceph.com/issues/57195 Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_sal.cc b/src/rgw/rgw_sal.cc index 37b95cf0dbe..02c08184723 100644 --- a/src/rgw/rgw_sal.cc +++ b/src/rgw/rgw_sal.cc @@ -304,8 +304,8 @@ StoreManager::Config StoreManager::get_config(bool admin, CephContext* cct) /* Check to see if d3n is configured, but only for non-admin */ const auto& d3n = g_conf().get_val("rgw_d3n_l1_local_datacache_enabled"); if (!admin && d3n) { - if (g_conf().get_val("rgw_max_chunk_size") != - g_conf().get_val("rgw_obj_stripe_size")) { + if (g_conf().get_val("rgw_max_chunk_size") != + g_conf().get_val("rgw_obj_stripe_size")) { lsubdout(cct, rgw_datacache, 0) << "rgw_d3n: WARNING: D3N DataCache disabling (D3N requires that the chunk_size equals stripe_size)" << dendl; } else if (!g_conf().get_val("rgw_beast_enable_async")) { lsubdout(cct, rgw_datacache, 0) << "rgw_d3n: WARNING: D3N DataCache disabling (D3N requires yield context - rgw_beast_enable_async=true)" << dendl;