<< kb_t(pm.pg_map.osd_sum.kb_avail) << " / "
<< kb_t(pm.pg_map.osd_sum.kb) << " avail";
- if (pm.pg_map.pg_sum.num_objects_missing_on_primary)
- out << "; " << pm.pg_map.pg_sum.num_objects_missing_on_primary << "/"
- << pm.pg_map.pg_sum.num_objects << " mip";
-
+ if (pm.pg_map.pg_sum.num_objects_degraded) {
+ double pc = (double)pm.pg_map.pg_sum.num_objects_degraded / (double)pm.pg_map.pg_sum.num_object_copies * (double)100.0;
+ char b[20];
+ sprintf(b, "%.3lf", pc);
+ out << "; " //<< pm.pg_map.pg_sum.num_objects_missing_on_primary << "/"
+ << pm.pg_map.pg_sum.num_objects_degraded
+ << "/" << pm.pg_map.pg_sum.num_object_copies << " degraded (" << b << "%)";
+ }
return out;
}
pg_stats_stable.reported = osd->osdmap->get_epoch();
pg_stats_stable.state = state;
pg_stats_stable.acting = acting;
- pg_stats_stable.num_objects_missing_on_primary = missing.num_missing();
+
+ pg_stats_stable.num_object_copies = pg_stats_stable.num_objects * info.pgid.size();
+ if (!is_clean()) {
+ pg_stats_stable.num_objects_missing_on_primary = missing.num_missing();
+ int degraded = missing.num_missing();
+ for (unsigned i=1; i<acting.size(); i++)
+ degraded += peer_missing[i].num_missing();
+ pg_stats_stable.num_objects_degraded = degraded;
+ }
} else {
pg_stats_valid = false;
}
<< " (" << pgi.log_bottom << "," << pgi.last_update << "]"
<< (pgi.log_backlog ? "+backlog":"");
//out << " c " << pgi.epoch_created;
+ out << " n=" << pgi.stats.num_objects;
out << " " << pgi.history
<< ")";
return out;
__u64 num_kb; // in KB
__u64 num_objects;
__u64 num_object_clones;
+ __u64 num_object_copies; // num_objects * num_replicas
__u64 num_objects_missing_on_primary;
__u64 num_objects_degraded;
::encode(num_kb, bl);
::encode(num_objects, bl);
::encode(num_object_clones, bl);
+ ::encode(num_object_copies, bl);
::encode(num_objects_missing_on_primary, bl);
::encode(num_objects_degraded, bl);
::encode(acting, bl);
::decode(num_kb, bl);
::decode(num_objects, bl);
::decode(num_object_clones, bl);
+ ::decode(num_object_copies, bl);
::decode(num_objects_missing_on_primary, bl);
::decode(num_objects_degraded, bl);
::decode(acting, bl);
num_kb += o.num_kb;
num_objects += o.num_objects;
num_object_clones += o.num_object_clones;
+ num_object_copies += o.num_object_copies;
num_objects_missing_on_primary += o.num_objects_missing_on_primary;
num_objects_degraded += o.num_objects_degraded;
}
num_kb -= o.num_kb;
num_objects -= o.num_objects;
num_object_clones -= o.num_object_clones;
+ num_object_copies -= o.num_object_copies;
num_objects_missing_on_primary -= o.num_objects_missing_on_primary;
num_objects_degraded -= o.num_objects_degraded;
}