]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: move merge operator
authorSage Weil <sage@redhat.com>
Mon, 20 Jun 2016 13:59:28 +0000 (09:59 -0400)
committerSage Weil <sage@redhat.com>
Wed, 22 Jun 2016 15:28:41 +0000 (11:28 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc

index 00264dc41bf4fb1651336100087bd7755f1fa1cb..bc83680dcf9aba99705c0d6974982056d9bca1a5 100644 (file)
@@ -431,6 +431,35 @@ static void get_wal_key(uint64_t seq, string *out)
 }
 
 
+// merge operators
+
+struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator {
+  virtual void merge_nonexistent(
+    const char *rdata, size_t rlen, std::string *new_value) override {
+    *new_value = std::string(rdata, rlen);
+  }
+  virtual void merge(
+    const char *ldata, size_t llen,
+    const char *rdata, size_t rlen,
+    std::string *new_value) {
+    assert(llen == rlen);
+    assert((rlen % 8) == 0);
+    new_value->resize(rlen);
+    const __le64* lv = (const __le64*)ldata;
+    const __le64* rv = (const __le64*)rdata;
+    __le64* nv = &(__le64&)new_value->at(0);
+    for (size_t i = 0; i < rlen >> 3; ++i) {
+      nv[i] = lv[i] + rv[i];
+    }
+  }
+  // We use each operator name and each prefix to construct the
+  // overall RocksDB operator name for consistency check at open time.
+  virtual string name() const {
+    return "int64_array";
+  }
+};
+
+
 // Buffer
 
 ostream& operator<<(ostream& out, const BlueStore::Buffer& b)
@@ -560,31 +589,6 @@ void BlueStore::LRUCache::_audit(const char *when)
 }
 #endif
 
-struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator {
-  virtual void merge_nonexistent(
-    const char *rdata, size_t rlen, std::string *new_value) override {
-    *new_value = std::string(rdata, rlen);
-  }
-  virtual void merge(
-    const char *ldata, size_t llen,
-    const char *rdata, size_t rlen,
-    std::string *new_value) {
-    assert(llen == rlen);
-    assert((rlen % 8) == 0);
-    new_value->resize(rlen);
-    const __le64* lv = (const __le64*)ldata;
-    const __le64* rv = (const __le64*)rdata;
-    __le64* nv = &(__le64&)new_value->at(0);
-    for (size_t i = 0; i < rlen >> 3; ++i) {
-      nv[i] = lv[i] + rv[i];
-    }
-  }
-  // We use each operator name and each prefix to construct the
-  // overall RocksDB operator name for consistency check at open time.
-  virtual string name() const {
-    return "int64_array";
-  }
-};
 
 // BufferSpace