]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
features: deprecate CEPH_FEATURE_OSD_OBJECT_DIGEST
authorSamuel Just <sjust@redhat.com>
Mon, 14 Mar 2016 22:55:52 +0000 (15:55 -0700)
committerSamuel Just <sjust@redhat.com>
Thu, 17 Mar 2016 01:10:13 +0000 (18:10 -0700)
We can't actually reuse this until all of the 1<<46 bits are
ready.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/include/ceph_features.h
src/osd/PG.cc
src/osd/PGBackend.cc
src/osd/PGBackend.h
src/osd/osd_types.cc

index 4e446ad39fc4fe6b7376a8a42752829067a1c604..fa0c91c5dc801456c41516b041505eb3e819c74b 100755 (executable)
@@ -62,7 +62,7 @@
 #define DEPRECATED_CEPH_FEATURE_OSD_SET_ALLOC_HINT (1ULL<<45) // DEPRECATED: JEWEL
 #define CEPH_FEATURE_OSD_FADVISE_FLAGS (1ULL<<46)
 #define DEPRECATED_CEPH_FEATURE_OSD_REPOP         (1ULL<<46) // DEPRECATED: JEWEL (can't remove until all 1<<46 are ready)
-#define CEPH_FEATURE_OSD_OBJECT_DIGEST  (1ULL<<46)  /* overlap with fadvise */
+#define DEPRECATED_CEPH_FEATURE_OSD_OBJECT_DIGEST  (1ULL<<46) // DEPRECATED: JEWEL (can't remove until all 1<<46 are ready)
 #define CEPH_FEATURE_OSD_TRANSACTION_MAY_LAYOUT (1ULL<<46) /* overlap w/ fadvise */
 #define CEPH_FEATURE_MDS_QUOTA      (1ULL<<47)
 #define CEPH_FEATURE_CRUSH_V4      (1ULL<<48)  /* straw2 buckets */
@@ -163,7 +163,7 @@ static inline unsigned long long ceph_sanitize_features(unsigned long long f) {
          DEPRECATED_CEPH_FEATURE_OSD_SET_ALLOC_HINT |   \
         CEPH_FEATURE_OSD_FADVISE_FLAGS |     \
          DEPRECATED_CEPH_FEATURE_OSD_REPOP |   \
-        CEPH_FEATURE_OSD_OBJECT_DIGEST |    \
+        DEPRECATED_CEPH_FEATURE_OSD_OBJECT_DIGEST      |    \
          CEPH_FEATURE_OSD_TRANSACTION_MAY_LAYOUT |   \
         CEPH_FEATURE_MDS_QUOTA | \
          CEPH_FEATURE_CRUSH_V4 |            \
index 682f41569ba33639c53a32f690f84b8e735432e9..434be69b3c5339311b04254b6d184467e230e154 100644 (file)
@@ -4075,10 +4075,7 @@ void PG::chunky_scrub(ThreadPool::TPHandle &handle)
          osd->clog->info(oss);
        }
 
-       if (get_min_acting_features() & CEPH_FEATURE_OSD_OBJECT_DIGEST)
-         scrubber.seed = -1; // better, and enables oi digest checks
-       else
-         scrubber.seed = 0;  // compat
+       scrubber.seed = -1;
 
         break;
 
@@ -4325,13 +4322,8 @@ void PG::scrub_compare_maps()
       maps[*i] = &scrubber.received_maps[*i];
     }
 
-    // can we relate scrub digests to oi digests?
-    bool okseed = (get_min_upacting_features() & CEPH_FEATURE_OSD_OBJECT_DIGEST);
-    assert(okseed == (scrubber.seed == 0xffffffff));
-
     get_pgbackend()->be_compare_scrubmaps(
       maps,
-      okseed,
       state_test(PG_STATE_REPAIR),
       scrubber.missing,
       scrubber.inconsistent,
index d2e7a629680ff7ba2f940b943032cdf5fc10981a..7351e558d8a0a8dd0b5362c2f0be91b4205f34fa 100644 (file)
@@ -400,7 +400,6 @@ enum scrub_error_type PGBackend::be_compare_scrub_objects(
   pg_shard_t auth_shard,
   const ScrubMap::object &auth,
   const object_info_t& auth_oi,
-  bool okseed,
   const ScrubMap::object &candidate,
   shard_info_wrapper &result,
   ostream &errorstream)
@@ -419,7 +418,7 @@ enum scrub_error_type PGBackend::be_compare_scrub_objects(
       if (error != CLEAN)
         errorstream << ", ";
       error = DEEP_ERROR;
-      bool known = okseed && auth_oi.is_data_digest() &&
+      bool known = auth_oi.is_data_digest() &&
        auth.digest == auth_oi.data_digest;
       errorstream << "data_digest 0x" << std::hex << candidate.digest
                  << " != "
@@ -434,7 +433,7 @@ enum scrub_error_type PGBackend::be_compare_scrub_objects(
       if (error != CLEAN)
         errorstream << ", ";
       error = DEEP_ERROR;
-      bool known = okseed && auth_oi.is_omap_digest() &&
+      bool known = auth_oi.is_omap_digest() &&
        auth.omap_digest == auth_oi.omap_digest;
       errorstream << "omap_digest 0x" << std::hex << candidate.omap_digest
                  << " != "
@@ -494,7 +493,6 @@ map<pg_shard_t, ScrubMap *>::const_iterator
   PGBackend::be_select_auth_object(
   const hobject_t &obj,
   const map<pg_shard_t,ScrubMap*> &maps,
-  bool okseed,
   object_info_t *auth_oi)
 {
   map<pg_shard_t, ScrubMap *>::const_iterator auth = maps.end();
@@ -556,7 +554,7 @@ map<pg_shard_t, ScrubMap *>::const_iterator
       continue;
     }
     if (parent->get_pool().is_replicated()) {
-      if (okseed && oi.is_data_digest() && i->second.digest_present &&
+      if (oi.is_data_digest() && i->second.digest_present &&
          oi.data_digest != i->second.digest) {
        dout(10) << __func__ << ": rejecting osd " << j->first
                 << " for obj " << obj
@@ -565,7 +563,7 @@ map<pg_shard_t, ScrubMap *>::const_iterator
                 << std::dec << dendl;
        continue;
       }
-      if (okseed && oi.is_omap_digest() && i->second.omap_digest_present &&
+      if (oi.is_omap_digest() && i->second.omap_digest_present &&
          oi.omap_digest != i->second.omap_digest) {
        dout(10) << __func__ << ": rejecting osd " << j->first
                 << " for obj " << obj
@@ -586,7 +584,6 @@ map<pg_shard_t, ScrubMap *>::const_iterator
 
 void PGBackend::be_compare_scrubmaps(
   const map<pg_shard_t,ScrubMap*> &maps,
-  bool okseed,
   bool repair,
   map<hobject_t, set<pg_shard_t>, hobject_t::BitwiseComparator> &missing,
   map<hobject_t, set<pg_shard_t>, hobject_t::BitwiseComparator> &inconsistent,
@@ -616,7 +613,7 @@ void PGBackend::be_compare_scrubmaps(
        ++k) {
     object_info_t auth_oi;
     map<pg_shard_t, ScrubMap *>::const_iterator auth =
-      be_select_auth_object(*k, maps, okseed, &auth_oi);
+      be_select_auth_object(*k, maps, &auth_oi);
     inconsistent_obj_wrapper object_error{*k};
 
     list<pg_shard_t> auth_list;
@@ -645,7 +642,6 @@ void PGBackend::be_compare_scrubmaps(
          be_compare_scrub_objects(auth->first,
                                   auth_object,
                                   auth_oi,
-                                  okseed,
                                   j->second->objects[*k],
                                   shard_info,
                                   ss);
@@ -683,8 +679,7 @@ void PGBackend::be_compare_scrubmaps(
       object_error.add_shard(auth->first, auth_shard);
     }
 
-    if (okseed &&
-       clean &&
+    if (clean &&
        parent->get_pool().is_replicated()) {
       enum {
        NO = 0,
index 4ba705b66f2a35caa084523bc0b62b5105767557..48ff1d9156fb86d8f6c8815b389dc933ee317840 100644 (file)
@@ -587,18 +587,15 @@ struct shard_info_wrapper;
      pg_shard_t auth_shard,
      const ScrubMap::object &auth,
      const object_info_t& auth_oi,
-     bool okseed,
      const ScrubMap::object &candidate,
      shard_info_wrapper& shard_error,
      ostream &errorstream);
    map<pg_shard_t, ScrubMap *>::const_iterator be_select_auth_object(
      const hobject_t &obj,
      const map<pg_shard_t,ScrubMap*> &maps,
-     bool okseed,
      object_info_t *auth_oi);
    void be_compare_scrubmaps(
      const map<pg_shard_t,ScrubMap*> &maps,
-     bool okseed,   ///< true if scrub digests have same seed our oi digests
      bool repair,
      map<hobject_t, set<pg_shard_t>, hobject_t::BitwiseComparator> &missing,
      map<hobject_t, set<pg_shard_t>, hobject_t::BitwiseComparator> &inconsistent,
index 4d3a8904d58c15221f0aeeeea1e750de6d97b328..f109db7a6efe84e01cf671fde4da7fe98cb22c51 100644 (file)
@@ -4058,28 +4058,6 @@ void object_copy_data_t::decode_classic(bufferlist::iterator& bl)
 
 void object_copy_data_t::encode(bufferlist& bl, uint64_t features) const
 {
-  if ((features & CEPH_FEATURE_OSD_OBJECT_DIGEST) == 0) {
-    ENCODE_START(4, 1, bl);
-    ::encode(size, bl);
-    ::encode(mtime, bl);
-    ::encode((__u32)0, bl);  // was category; no longer used
-    ::encode(attrs, bl);
-    ::encode(data, bl);
-    if (omap_data.length())
-      bl.append(omap_data);
-    else
-      ::encode((__u32)0, bl);
-    ::encode(cursor, bl);
-    ::encode(omap_header, bl);
-    ::encode(snaps, bl);
-    ::encode(snap_seq, bl);
-    ::encode(flags, bl);
-    ::encode(data_digest, bl);
-    ::encode(omap_digest, bl);
-    ENCODE_FINISH(bl);
-    return;
-  }
-
   ENCODE_START(7, 5, bl);
   ::encode(size, bl);
   ::encode(mtime, bl);