Skip to content

Commit

Permalink
common/CDC: make calc_chunks const
Browse files Browse the repository at this point in the history
Signed-off-by: Sage Weil <[email protected]>
  • Loading branch information
liewegas committed May 27, 2020
1 parent f3d37f5 commit 231cee5
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 13 deletions.
4 changes: 3 additions & 1 deletion src/common/CDC.h
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
4 changes: 2 additions & 2 deletions src/common/FastCDC.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/common/FastCDC.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,5 @@ class FastCDC : public CDC {

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;
};
2 changes: 1 addition & 1 deletion src/common/FixedCDC.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion src/common/FixedCDC.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ class FixedCDC : public CDC {
}
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;
};
6 changes: 3 additions & 3 deletions src/common/rabin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) ;
}

Expand All @@ -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();
Expand Down
8 changes: 4 additions & 4 deletions src/common/rabin.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,15 @@ class RabinChunk : public CDC {

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; }
Expand Down Expand Up @@ -94,7 +94,7 @@ class RabinChunk : public CDC {
}

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;
Expand Down

0 comments on commit 231cee5

Please sign in to comment.