From 35e2585e158f1b88c814d8e3180e3a316490b83f Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Mon, 14 Mar 2016 15:55:52 -0700 Subject: [PATCH] features: deprecate CEPH_FEATURE_OSD_OBJECT_DIGEST We can't actually reuse this until all of the 1<<46 bits are ready. Signed-off-by: Samuel Just --- src/include/ceph_features.h | 4 ++-- src/osd/PG.cc | 10 +--------- src/osd/PGBackend.cc | 17 ++++++----------- src/osd/PGBackend.h | 3 --- src/osd/osd_types.cc | 22 ---------------------- 5 files changed, 9 insertions(+), 47 deletions(-) diff --git a/src/include/ceph_features.h b/src/include/ceph_features.h index 4e446ad39fc4f..fa0c91c5dc801 100755 --- a/src/include/ceph_features.h +++ b/src/include/ceph_features.h @@ -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 | \ diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 682f41569ba33..434be69b3c533 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -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, diff --git a/src/osd/PGBackend.cc b/src/osd/PGBackend.cc index d2e7a629680ff..7351e558d8a0a 100644 --- a/src/osd/PGBackend.cc +++ b/src/osd/PGBackend.cc @@ -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::const_iterator PGBackend::be_select_auth_object( const hobject_t &obj, const map &maps, - bool okseed, object_info_t *auth_oi) { map::const_iterator auth = maps.end(); @@ -556,7 +554,7 @@ map::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::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::const_iterator void PGBackend::be_compare_scrubmaps( const map &maps, - bool okseed, bool repair, map, hobject_t::BitwiseComparator> &missing, map, hobject_t::BitwiseComparator> &inconsistent, @@ -616,7 +613,7 @@ void PGBackend::be_compare_scrubmaps( ++k) { object_info_t auth_oi; map::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 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, diff --git a/src/osd/PGBackend.h b/src/osd/PGBackend.h index 4ba705b66f2a3..48ff1d9156fb8 100644 --- a/src/osd/PGBackend.h +++ b/src/osd/PGBackend.h @@ -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::const_iterator be_select_auth_object( const hobject_t &obj, const map &maps, - bool okseed, object_info_t *auth_oi); void be_compare_scrubmaps( const map &maps, - bool okseed, ///< true if scrub digests have same seed our oi digests bool repair, map, hobject_t::BitwiseComparator> &missing, map, hobject_t::BitwiseComparator> &inconsistent, diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index 4d3a8904d58c1..f109db7a6efe8 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -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); -- 2.39.5