]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/common/scrub_types.cc
update sources to v12.2.5
[ceph.git] / ceph / src / common / scrub_types.cc
index f53d8ea3f93deb158229699d32387647909a4a9f..dd8e801aa8ba02cb20ed83e2030ddf972c93daf7 100644 (file)
@@ -70,8 +70,9 @@ void shard_info_wrapper::set_object(const ScrubMap::object& object)
 
 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;
   }
@@ -87,8 +88,9 @@ void shard_info_wrapper::encode(bufferlist& bl) const
 
 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;
   }
@@ -98,8 +100,7 @@ void shard_info_wrapper::decode(bufferlist::iterator& bp)
   ::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);
 }
 
@@ -120,10 +121,12 @@ void
 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
@@ -181,24 +184,24 @@ void inconsistent_snapset_wrapper::set_headless()
   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)
@@ -213,9 +216,9 @@ void inconsistent_snapset_wrapper::set_clone(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()
@@ -230,21 +233,25 @@ void inconsistent_snapset_wrapper::set_size_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);
 }