]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/CDC: make calc_chunks const
authorSage Weil <sage@newdream.net>
Sat, 16 May 2020 15:16:13 +0000 (10:16 -0500)
committerSage Weil <sage@newdream.net>
Wed, 27 May 2020 12:47:28 +0000 (07:47 -0500)
Signed-off-by: Sage Weil <sage@newdream.net>
src/common/CDC.h
src/common/FastCDC.cc
src/common/FastCDC.h
src/common/FixedCDC.cc
src/common/FixedCDC.h
src/common/rabin.cc
src/common/rabin.h

index e58377dffe897ddbd83dff5477a42fd90de7dddf..8c564034f2cfaea6caa7a71c387569da5ba46b5a 100644 (file)
@@ -12,10 +12,12 @@ class CDC {
 public:
   virtual ~CDC() = default;
 
+  /// calculate chunk boundaries as vector of (offset, length) pairs
   virtual void calc_chunks(
     const bufferlist& inputdata,
-    std::vector<std::pair<uint64_t, uint64_t>> *chunks) = 0;
+    std::vector<std::pair<uint64_t, uint64_t>> *chunks) const = 0;
 
+  /// set target chunk size as a power of 2, and number of bits for hard min/max
   virtual void set_target_bits(int bits, int windowbits = 2) = 0;
 
   static std::unique_ptr<CDC> create(
index cacd084fc5c46f43fa1256c985cb17ac3940676b..b83a83749f829cea40f8d988dd94ae9d4ab1b2a7 100644 (file)
@@ -64,7 +64,7 @@ static inline bool _scan(
   size_t& pos,
   size_t max,   // how much to read
   uint64_t& fp, // fingerprint
-  uint64_t mask, uint64_t *table)
+  uint64_t mask, const uint64_t *table)
 {
   while (pos < max) {
     if (*pp == *pe) {
@@ -88,7 +88,7 @@ static inline bool _scan(
 
 void FastCDC::calc_chunks(
   const bufferlist& bl,
-  std::vector<std::pair<uint64_t, uint64_t>> *chunks)
+  std::vector<std::pair<uint64_t, uint64_t>> *chunks) const
 {
   if (bl.length() == 0) {
     return;
index 75b0fba954c49043c8534923b30ee5fce1a9492f..ce2ce95df6c08173b95e999317b63efc3b76562d 100644 (file)
@@ -42,5 +42,5 @@ public:
 
   void calc_chunks(
     const bufferlist& bl,
-    std::vector<std::pair<uint64_t, uint64_t>> *chunks) override;
+    std::vector<std::pair<uint64_t, uint64_t>> *chunks) const override;
 };
index d2d55d5cfb65e83144a7d6db85f4de7aef4964fe..6e87f070e81f4f2b167d4f63e2bf7cf8bd626fdf 100644 (file)
@@ -7,7 +7,7 @@
 
 void FixedCDC::calc_chunks(
   const bufferlist& bl,
-  std::vector<std::pair<uint64_t, uint64_t>> *chunks)
+  std::vector<std::pair<uint64_t, uint64_t>> *chunks) const
 {
   size_t len = bl.length();
   if (!len) {
index d3939753e731d632a3d256d59fb018d1a851af78..a19a1859bfb76777a053cafce3c7cad646ba126b 100644 (file)
@@ -19,5 +19,5 @@ public:
   }
   void calc_chunks(
     const bufferlist& bl,
-    std::vector<std::pair<uint64_t, uint64_t>> *chunks) override;
+    std::vector<std::pair<uint64_t, uint64_t>> *chunks) const override;
 };
index 4352f798219ea422d8954ff59d4245bc95406646..9a6bab4100c7d55b814e5bc301903d77400946eb 100644 (file)
@@ -7,7 +7,7 @@
 #include "rabin.h"
 
 
-uint64_t RabinChunk::gen_rabin_hash(char* chunk_data, uint64_t off, uint64_t len) {
+uint64_t RabinChunk::gen_rabin_hash(char* chunk_data, uint64_t off, uint64_t len) const {
   uint64_t roll_sum = 0;
   uint64_t data_len = len;
   if (data_len == 0) {
@@ -20,7 +20,7 @@ uint64_t RabinChunk::gen_rabin_hash(char* chunk_data, uint64_t off, uint64_t len
   return roll_sum;
 }
 
-bool RabinChunk::end_of_chunk(const uint64_t fp , int numbits) {
+bool RabinChunk::end_of_chunk(const uint64_t fp , int numbits) const {
   return ((fp & rabin_mask[numbits]) == 0) ;
 }
 
@@ -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<std::pair<uint64_t, uint64_t>>& chunks,
-                               uint64_t min_val, uint64_t max_val)
+                               uint64_t min_val, uint64_t max_val) const
 {
   char *ptr = inputdata.c_str();
   uint64_t data_size = inputdata.length();
index acc5766e4ad784954807da0f4b6bb965c1f53089..939aa4ff846a1e4bd89e4dc233204d19210b0368 100644 (file)
@@ -51,15 +51,15 @@ public:
 
   void calc_chunks(
     const ceph::buffer::list& inputdata,
-    std::vector<std::pair<uint64_t, uint64_t>> *chunks) override {
+    std::vector<std::pair<uint64_t, uint64_t>> *chunks) const override {
     bufferlist b = inputdata;
     do_rabin_chunks(b, *chunks);
   }
 
   int do_rabin_chunks(ceph::buffer::list& inputdata,
                      std::vector<std::pair<uint64_t, uint64_t>>& chunks,
-                     uint64_t min=0, uint64_t max=0);
-  uint64_t gen_rabin_hash(char* chunk_data, uint64_t off, uint64_t len = 0);
+                     uint64_t min=0, uint64_t max=0) const;
+  uint64_t gen_rabin_hash(char* chunk_data, uint64_t off, uint64_t len = 0) const;
   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; }
@@ -94,7 +94,7 @@ public:
   }
 
 private:
-  bool end_of_chunk(const uint64_t fp , int numbits);
+  bool end_of_chunk(const uint64_t fp , int numbits) const;
 
   uint32_t window_size;
   uint32_t rabin_prime;