]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: fix up _set_csum helper
authorSage Weil <sage@redhat.com>
Fri, 20 May 2016 18:23:55 +0000 (14:23 -0400)
committerSage Weil <sage@redhat.com>
Wed, 1 Jun 2016 15:40:47 +0000 (11:40 -0400)
- make it thread-safe
- call during mount

Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h

index 15cac81c050f3b510181e1106681f4a7b9f603cb..c78279c5c4b56df58264b4574c61ab2f8ac745ba 100644 (file)
@@ -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;
 
index 0525e2ac2b5170e9d088114a6f72a4fa7efe21a6..27ad14485711e3f246f938a766342a9d12b60dbe 100644 (file)
@@ -68,6 +68,7 @@ public:
   virtual void handle_conf_change(const struct md_config_t *conf,
                                   const std::set<std::string> &changed) override;
 
+  void _set_csum();
   class TransContext;