From: Abutalib Aghayev Date: Tue, 30 Jun 2020 16:54:40 +0000 (-0400) Subject: os/bluestore: Move Int64ArrayMergeOperator from BlueStore.cc to X-Git-Tag: v16.1.0~1832^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=efe1cd410ac9c56d2f355b91257a7f3d1f91e46e;p=ceph.git os/bluestore: Move Int64ArrayMergeOperator from BlueStore.cc to bluestore_common.h Int64ArrayMergeOperator will be used by ZonedFreelistManager as well. Signed-off-by: Abutalib Aghayev --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index e65c584583d8..3cf0ba95e6d9 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -23,8 +23,8 @@ #include "include/cpp-btree/btree_set.h" -#include "bluestore_common.h" #include "BlueStore.h" +#include "bluestore_common.h" #include "os/kv.h" #include "include/compat.h" #include "include/intarith.h" @@ -582,35 +582,6 @@ void _dump_transaction(CephContext *cct, ObjectStore::Transaction *t) *_dout << dendl; } -// merge operators - -struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator { - void merge_nonexistent( - const char *rdata, size_t rlen, std::string *new_value) override { - *new_value = std::string(rdata, rlen); - } - void merge( - const char *ldata, size_t llen, - const char *rdata, size_t rlen, - std::string *new_value) override { - ceph_assert(llen == rlen); - ceph_assert((rlen % 8) == 0); - new_value->resize(rlen); - const ceph_le64* lv = (const ceph_le64*)ldata; - const ceph_le64* rv = (const ceph_le64*)rdata; - ceph_le64* nv = &(ceph_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. - const char *name() const override { - return "int64_array"; - } -}; - - // Buffer ostream& operator<<(ostream& out, const BlueStore::Buffer& b) diff --git a/src/os/bluestore/bluestore_common.h b/src/os/bluestore/bluestore_common.h index 858cfd88fc5e..f61a5dcfdc30 100755 --- a/src/os/bluestore/bluestore_common.h +++ b/src/os/bluestore/bluestore_common.h @@ -17,6 +17,7 @@ #include "include/intarith.h" #include "include/ceph_assert.h" +#include "kv/KeyValueDB.h" template void apply_for_bitset_range(uint64_t off, @@ -33,4 +34,32 @@ void apply_for_bitset_range(uint64_t off, } } +// merge operators + +struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator { + void merge_nonexistent( + const char *rdata, size_t rlen, std::string *new_value) override { + *new_value = std::string(rdata, rlen); + } + void merge( + const char *ldata, size_t llen, + const char *rdata, size_t rlen, + std::string *new_value) override { + ceph_assert(llen == rlen); + ceph_assert((rlen % 8) == 0); + new_value->resize(rlen); + const ceph_le64* lv = (const ceph_le64*)ldata; + const ceph_le64* rv = (const ceph_le64*)rdata; + ceph_le64* nv = &(ceph_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. + const char *name() const override { + return "int64_array"; + } +}; + #endif