FLOOR(num_rd_kb);
FLOOR(num_wr);
FLOOR(num_wr_kb);
- FLOOR(num_scrub_errors);
FLOOR(num_shallow_scrub_errors);
FLOOR(num_deep_scrub_errors);
+ num_scrub_errors = num_shallow_scrub_errors + num_deep_scrub_errors;
FLOOR(num_objects_recovered);
FLOOR(num_bytes_recovered);
FLOOR(num_keys_recovered);
SPLIT(num_rd_kb);
SPLIT(num_wr);
SPLIT(num_wr_kb);
- SPLIT(num_scrub_errors);
- SPLIT(num_shallow_scrub_errors);
- SPLIT(num_deep_scrub_errors);
+ SPLIT_PRESERVE_NONZERO(num_shallow_scrub_errors);
+ SPLIT_PRESERVE_NONZERO(num_deep_scrub_errors);
+ for (unsigned i = 0; i < out.size(); ++i) {
+ out[i].num_scrub_errors = out[i].num_shallow_scrub_errors +
+ out[i].num_deep_scrub_errors;
+ }
SPLIT(num_objects_recovered);
SPLIT(num_bytes_recovered);
SPLIT(num_keys_recovered);
static string get_flag_string(flag_t flags) {
string s;
+ vector<string> sv = get_flag_vector(flags);
+ for (auto ss : sv) {
+ s += string("|") + ss;
+ }
+ if (s.length())
+ return s.substr(1);
+ return s;
+ }
+ static vector<string> get_flag_vector(flag_t flags) {
+ vector<string> sv;
if (flags & FLAG_LOST)
- s += "|lost";
+ sv.insert(sv.end(), "lost");
if (flags & FLAG_WHITEOUT)
- s += "|whiteout";
+ sv.insert(sv.end(), "whiteout");
if (flags & FLAG_DIRTY)
- s += "|dirty";
+ sv.insert(sv.end(), "dirty");
if (flags & FLAG_USES_TMAP)
- s += "|uses_tmap";
+ sv.insert(sv.end(), "uses_tmap");
if (flags & FLAG_OMAP)
- s += "|omap";
+ sv.insert(sv.end(), "omap");
if (flags & FLAG_DATA_DIGEST)
- s += "|data_digest";
+ sv.insert(sv.end(), "data_digest");
if (flags & FLAG_OMAP_DIGEST)
- s += "|omap_digest";
+ sv.insert(sv.end(), "omap_digest");
if (flags & FLAG_CACHE_PIN)
- s += "|cache_pin";
+ sv.insert(sv.end(), "cache_pin");
if (flags & FLAG_MANIFEST)
- s += "|manifest";
- if (s.length())
- return s.substr(1);
- return s;
+ sv.insert(sv.end(), "manifest");
+ return sv;
}
string get_flag_string() const {
return get_flag_string(flags);