]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: upgrade compression settings to atomics 11244/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Wed, 28 Sep 2016 00:49:34 +0000 (08:49 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Thu, 29 Sep 2016 02:18:51 +0000 (10:18 +0800)
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h

index 673dc1292e41a706690290da826e810dbfba5463..ed95a012f53840aa3a769483b26bc546509b235a 100644 (file)
@@ -2303,7 +2303,7 @@ void BlueStore::_set_compression()
   }
 
   compressor = nullptr;
-  if (comp_mode != COMP_NONE) {    
+  if (comp_mode.load() != COMP_NONE) {
     const char *alg = 0;
     if (g_conf->bluestore_compression_algorithm == "snappy") {
       alg = "snappy";
@@ -7530,11 +7530,12 @@ int BlueStore::_do_write(
 
   // compression parameters
   unsigned alloc_hints = o->onode.alloc_hint_flags;
+  int comp = comp_mode.load();
   wctx.compress =
-    (comp_mode == COMP_FORCE) ||
-    (comp_mode == COMP_AGGRESSIVE &&
+    (comp == COMP_FORCE) ||
+    (comp == COMP_AGGRESSIVE &&
      (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE) == 0) ||
-    (comp_mode == COMP_PASSIVE &&
+    (comp == COMP_PASSIVE &&
      (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE));
 
   if ((alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_SEQUENTIAL_READ) &&
@@ -7543,10 +7544,10 @@ int BlueStore::_do_write(
                        CEPH_OSD_ALLOC_HINT_FLAG_APPEND_ONLY)) &&
       (alloc_hints & CEPH_OSD_ALLOC_HINT_FLAG_RANDOM_WRITE) == 0) {
     dout(20) << __func__ << " will prefer large blob and csum sizes" << dendl;
-    wctx.comp_blob_size = comp_max_blob_size;
+    wctx.comp_blob_size = comp_max_blob_size.load();
     wctx.csum_order = min_alloc_size_order;
   } else {
-    wctx.comp_blob_size = comp_min_blob_size;
+    wctx.comp_blob_size = comp_min_blob_size.load();
   }
   dout(20) << __func__ << " prefer csum_order " << wctx.csum_order
           << " comp_blob_size 0x" << std::hex << wctx.comp_blob_size
index ad63d659100aa0d86a097b39a9585d767a61113b..8e3b5619806000e7a3418122513d4ff3a71e6fcc 100644 (file)
@@ -1370,10 +1370,10 @@ private:
     default: return "???";
     }
   }
-  CompressionMode comp_mode = COMP_NONE;      ///< compression mode
+  std::atomic<int> comp_mode = {COMP_NONE}; ///< compression mode
   CompressorRef compressor;
-  uint64_t comp_min_blob_size = 0;
-  uint64_t comp_max_blob_size = 0;
+  std::atomic<uint64_t> comp_min_blob_size = {0};
+  std::atomic<uint64_t> comp_max_blob_size = {0};
 
   // --------------------------------------------------------
   // private methods