void shard_info_wrapper::encode(bufferlist& bl) const
{
- ENCODE_START(2, 1, bl);
+ ENCODE_START(3, 3, bl);
::encode(errors, bl);
+ ::encode(primary, bl);
if (has_shard_missing()) {
return;
}
void shard_info_wrapper::decode(bufferlist::iterator& bp)
{
- DECODE_START(2, bp);
+ DECODE_START(3, bp);
::decode(errors, bp);
+ ::decode(primary, bp);
if (has_shard_missing()) {
return;
}
::decode(omap_digest, bp);
::decode(data_digest_present, bp);
::decode(data_digest, bp);
- if (struct_v > 1)
- ::decode(selected_oi, bp);
+ ::decode(selected_oi, bp);
DECODE_FINISH(bp);
}
inconsistent_obj_wrapper::set_auth_missing(const hobject_t& hoid,
const map<pg_shard_t, ScrubMap*>& maps,
map<pg_shard_t, shard_info_wrapper> &shard_map,
- int &shallow_errors, int &deep_errors)
+ int &shallow_errors, int &deep_errors,
+ const pg_shard_t &primary)
{
for (auto pg_map : maps) {
auto oid_object = pg_map.second->objects.find(hoid);
+ shard_map[pg_map.first].primary = (pg_map.first == primary);
if (oid_object == pg_map.second->objects.end())
shard_map[pg_map.first].set_missing();
else
errors |= inc_snapset_t::HEADLESS_CLONE;
}
-void inconsistent_snapset_wrapper::set_ss_attr_missing()
+void inconsistent_snapset_wrapper::set_snapset_missing()
{
errors |= inc_snapset_t::SNAPSET_MISSING;
}
-void inconsistent_snapset_wrapper::set_oi_attr_missing()
+void inconsistent_snapset_wrapper::set_info_missing()
{
- errors |= inc_snapset_t::OI_MISSING;
+ errors |= inc_snapset_t::INFO_MISSING;
}
-void inconsistent_snapset_wrapper::set_ss_attr_corrupted()
+void inconsistent_snapset_wrapper::set_snapset_corrupted()
{
errors |= inc_snapset_t::SNAPSET_CORRUPTED;
}
-void inconsistent_snapset_wrapper::set_oi_attr_corrupted()
+void inconsistent_snapset_wrapper::set_info_corrupted()
{
- errors |= inc_snapset_t::OI_CORRUPTED;
+ errors |= inc_snapset_t::INFO_CORRUPTED;
}
void inconsistent_snapset_wrapper::set_clone_missing(snapid_t snap)
clones.push_back(snap);
}
-void inconsistent_snapset_wrapper::set_snapset_mismatch()
+void inconsistent_snapset_wrapper::set_snapset_error()
{
- errors |= inc_snapset_t::SNAP_MISMATCH;
+ errors |= inc_snapset_t::SNAP_ERROR;
}
void inconsistent_snapset_wrapper::set_head_mismatch()
void inconsistent_snapset_wrapper::encode(bufferlist& bl) const
{
- ENCODE_START(1, 1, bl);
+ ENCODE_START(2, 1, bl);
::encode(errors, bl);
::encode(object, bl);
::encode(clones, bl);
::encode(missing, bl);
+ ::encode(ss_bl, bl);
ENCODE_FINISH(bl);
}
void inconsistent_snapset_wrapper::decode(bufferlist::iterator& bp)
{
- DECODE_START(1, bp);
+ DECODE_START(2, bp);
::decode(errors, bp);
::decode(object, bp);
::decode(clones, bp);
::decode(missing, bp);
+ if (struct_v >= 2) {
+ ::decode(ss_bl, bp);
+ }
DECODE_FINISH(bp);
}