{
for (auto& b : bm.blob_map) {
dout(log_level) << __func__ << " " << b << dendl;
- if (b.blob.has_csum_data()) {
+ if (b.blob.has_csum()) {
vector<uint64_t> v;
unsigned n = b.blob.get_csum_count();
for (unsigned i = 0; i < n; ++i)
s += '+';
s += "compressed";
}
+ if (flags & FLAG_CSUM) {
+ if (s.length())
+ s += '+';
+ s += "csum";
+ }
return s;
}
}
// we cannot release something smaller than our csum chunk size
- if (has_csum_data() && get_csum_chunk_size() > min_release_size) {
+ if (has_csum() && get_csum_chunk_size() > min_release_size) {
min_release_size = get_csum_chunk_size();
}
enum {
FLAG_MUTABLE = 1, ///< blob can be overwritten or split
FLAG_COMPRESSED = 2, ///< blob is compressed
+ FLAG_CSUM = 4, ///< blob as checksums
};
static string get_flags_string(unsigned flags);
return len;
}
- bool has_csum_data() const {
- return csum_data.length() > 0;
+ bool has_csum() const {
+ return has_flag(FLAG_CSUM);
}
uint32_t get_csum_chunk_size() const {
}
void init_csum(unsigned type, unsigned order, unsigned len) {
+ flags |= FLAG_CSUM;
csum_type = type;
csum_chunk_order = order;
csum_data = buffer::create(get_csum_value_size() * len / get_csum_chunk_size());