From: Sage Weil Date: Fri, 20 May 2016 18:23:55 +0000 (-0400) Subject: os/bluestore: fix up _set_csum helper X-Git-Tag: v11.0.0~359^2~35 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=32c6ba129d289ca9b56ecb0ea1ca7d74a2506836;p=ceph.git os/bluestore: fix up _set_csum helper - make it thread-safe - call during mount Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 15cac81c050f..c78279c5c4b5 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -800,17 +800,23 @@ void BlueStore::handle_conf_change(const struct md_config_t *conf, { if (changed.count("bluestore_csum_type") || changed.count("bluestore_csum")) { - csum_type = bluestore_blob_t::get_csum_string_type( - conf->bluestore_csum_type); - if (csum_type < 0 || !conf->bluestore_csum) { - csum_type = bluestore_blob_t::CSUM_NONE; - } - dout(10) << __func__ << " csum_type " - << bluestore_blob_t::get_csum_type_string(csum_type) - << dendl; + _set_csum(); } } +void BlueStore::_set_csum() +{ + int t = bluestore_blob_t::get_csum_string_type( + g_conf->bluestore_csum_type); + if (t < 0 || !g_conf->bluestore_csum) { + t = bluestore_blob_t::CSUM_NONE; + } + csum_type = t; + dout(10) << __func__ << " csum_type " + << bluestore_blob_t::get_csum_type_string(csum_type) + << dendl; +} + void BlueStore::_init_logger() { PerfCountersBuilder b(g_ceph_context, "BlueStore", @@ -2020,6 +2026,7 @@ int BlueStore::mount() if (r < 0) goto out_stop; + _set_csum(); mounted = true; return 0; diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 0525e2ac2b51..27ad14485711 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -68,6 +68,7 @@ public: virtual void handle_conf_change(const struct md_config_t *conf, const std::set &changed) override; + void _set_csum(); class TransContext;