f->dump_stream("last_scrub_stamp") << last_scrub_stamp;
f->dump_stream("last_deep_scrub") << last_deep_scrub;
f->dump_stream("last_deep_scrub_stamp") << last_deep_scrub_stamp;
+ f->dump_stream("last_clean_scrub_stamp") << last_clean_scrub_stamp;
f->dump_unsigned("log_size", log_size);
f->dump_unsigned("ondisk_log_size", ondisk_log_size);
f->dump_stream("stats_invalid") << stats_invalid;
void pg_stat_t::encode(bufferlist &bl) const
{
- ENCODE_START(11, 8, bl);
+ ENCODE_START(12, 8, bl);
::encode(version, bl);
::encode(reported, bl);
::encode(state, bl);
::encode(last_deep_scrub, bl);
::encode(last_deep_scrub_stamp, bl);
::encode(stats_invalid, bl);
+ ::encode(last_clean_scrub_stamp, bl);
ENCODE_FINISH(bl);
}
void pg_stat_t::decode(bufferlist::iterator &bl)
{
- DECODE_START_LEGACY_COMPAT_LEN(10, 8, 8, bl);
+ DECODE_START_LEGACY_COMPAT_LEN(12, 8, 8, bl);
::decode(version, bl);
::decode(reported, bl);
::decode(state, bl);
} else {
::decode(stats_invalid, bl);
}
+ if (struct_v >= 12) {
+ ::decode(last_clean_scrub_stamp, bl);
+ } else {
+ last_clean_scrub_stamp = utime_t();
+ }
DECODE_FINISH(bl);
}
a.last_scrub_stamp = utime_t(11, 12);
a.last_deep_scrub = eversion_t(13, 14);
a.last_deep_scrub_stamp = utime_t(15, 16);
+ a.last_clean_scrub_stamp = utime_t(17, 18);
list<object_stat_collection_t*> l;
object_stat_collection_t::generate_test_instances(l);
a.stats = *l.back();
void pg_history_t::encode(bufferlist &bl) const
{
- ENCODE_START(5, 4, bl);
+ ENCODE_START(6, 4, bl);
::encode(epoch_created, bl);
::encode(last_epoch_started, bl);
::encode(last_epoch_clean, bl);
::encode(last_scrub_stamp, bl);
::encode(last_deep_scrub, bl);
::encode(last_deep_scrub_stamp, bl);
+ ::encode(last_clean_scrub_stamp, bl);
ENCODE_FINISH(bl);
}
void pg_history_t::decode(bufferlist::iterator &bl)
{
- DECODE_START_LEGACY_COMPAT_LEN(5, 4, 4, bl);
+ DECODE_START_LEGACY_COMPAT_LEN(6, 4, 4, bl);
::decode(epoch_created, bl);
::decode(last_epoch_started, bl);
if (struct_v >= 3)
if (struct_v >= 2) {
::decode(last_scrub, bl);
::decode(last_scrub_stamp, bl);
- if (struct_v >= 5) {
- ::decode(last_deep_scrub, bl);
- ::decode(last_deep_scrub_stamp, bl);
- }
+ }
+ if (struct_v >= 5) {
+ ::decode(last_deep_scrub, bl);
+ ::decode(last_deep_scrub_stamp, bl);
+ }
+ if (struct_v >= 6) {
+ ::decode(last_clean_scrub_stamp, bl);
}
DECODE_FINISH(bl);
}
f->dump_stream("last_scrub_stamp") << last_scrub_stamp;
f->dump_stream("last_deep_scrub") << last_deep_scrub;
f->dump_stream("last_deep_scrub_stamp") << last_deep_scrub_stamp;
+ f->dump_stream("last_clean_scrub_stamp") << last_clean_scrub_stamp;
}
void pg_history_t::generate_test_instances(list<pg_history_t*>& o)
o.back()->last_scrub_stamp = utime_t(10, 11);
o.back()->last_deep_scrub = eversion_t(12, 13);
o.back()->last_deep_scrub_stamp = utime_t(14, 15);
+ o.back()->last_clean_scrub_stamp = utime_t(16, 17);
}
eversion_t last_deep_scrub;
utime_t last_scrub_stamp;
utime_t last_deep_scrub_stamp;
+ utime_t last_clean_scrub_stamp;
object_stat_collection_t stats;
bool stats_invalid;
pg_stat_t()
: state(0),
created(0), last_epoch_clean(0),
- parent_split_bits(0),
+ parent_split_bits(0),
stats_invalid(false),
log_size(0), ondisk_log_size(0),
mapping_epoch(0)
eversion_t last_deep_scrub;
utime_t last_scrub_stamp;
utime_t last_deep_scrub_stamp;
+ utime_t last_clean_scrub_stamp;
pg_history_t()
: epoch_created(0),
last_deep_scrub_stamp = other.last_deep_scrub_stamp;
modified = true;
}
+ if (other.last_clean_scrub_stamp > last_clean_scrub_stamp) {
+ last_clean_scrub_stamp = other.last_clean_scrub_stamp;
+ modified = true;
+ }
return modified;
}