From: Sage Weil Date: Tue, 12 May 2020 16:51:11 +0000 (-0500) Subject: common/rabin: some cleanups X-Git-Tag: v17.0.0~2262^2~27 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=babb701b7e974ea6fc01b2204184a64340249800;p=ceph.git common/rabin: some cleanups Signed-off-by: Sage Weil --- diff --git a/src/common/rabin.cc b/src/common/rabin.cc index 658ab37243877..4352f798219ea 100644 --- a/src/common/rabin.cc +++ b/src/common/rabin.cc @@ -38,7 +38,7 @@ bool RabinChunk::end_of_chunk(const uint64_t fp , int numbits) { int RabinChunk::do_rabin_chunks(ceph::buffer::list& inputdata, std::vector>& chunks, - uint64_t min_val = 0, uint64_t max_val = 0) + uint64_t min_val, uint64_t max_val) { char *ptr = inputdata.c_str(); uint64_t data_size = inputdata.length(); diff --git a/src/common/rabin.h b/src/common/rabin.h index 6ffaa2bcf92b6..795d8aed7df23 100644 --- a/src/common/rabin.h +++ b/src/common/rabin.h @@ -34,8 +34,10 @@ public: } void default_init_rabin_options() { - std::vector _rabin_mask = {0,1,3,7,15,31,63,127,255,511,1023,2047, - 4095,8191,16383,32767,65535}; + std::vector _rabin_mask; + for (size_t i = 0; i < 63; ++i) { + _rabin_mask.push_back((1ull << i) - 1); + } window_size = 48; rabin_prime = 3; mod_prime = 6148914691236517051; @@ -48,9 +50,8 @@ public: int do_rabin_chunks(ceph::buffer::list& inputdata, std::vector>& chunks, - uint64_t min, uint64_t max); + uint64_t min=0, uint64_t max=0); uint64_t gen_rabin_hash(char* chunk_data, uint64_t off, uint64_t len = 0); - bool end_of_chunk(const uint64_t fp , int numbits); void set_window_size(uint32_t size) { window_size = size; } void set_rabin_prime(uint32_t r_prime) { rabin_prime = r_prime; } void set_mod_prime(uint64_t m_prime) { mod_prime = m_prime; } @@ -58,6 +59,7 @@ public: void set_rabin_mask(std::vector & mask) { rabin_mask = mask; } void set_min_chunk(uint32_t c_min) { min = c_min; } void set_max_chunk(uint32_t c_max) { max = c_max; } + int add_rabin_mask(uint64_t mask) { rabin_mask.push_back(mask); for (int i = 0; rabin_mask.size(); i++) { @@ -67,9 +69,15 @@ public: } return -1; } - void set_numbits(uint32_t bit) { num_bits = bit; } + void set_numbits(uint32_t bits) { + ceph_assert(bits > 0); + ceph_assert(bits < 63); + num_bits = bits; + } + private: + bool end_of_chunk(const uint64_t fp , int numbits); uint32_t window_size; uint32_t rabin_prime;