From: Greg Farnum Date: Fri, 11 Aug 2017 22:10:01 +0000 (-0700) Subject: osd: be more precise about our asserts and cases when rebuilding missing sets and... X-Git-Tag: v13.0.0~104^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a9921a2fdaab823bf348ae7fc773647c9664952d;p=ceph.git osd: be more precise about our asserts and cases when rebuilding missing sets and handling divergent priors Fixes: http://tracker.ceph.com/issues/20985 Signed-off-by: Greg Farnum --- diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h index c86bfb5bd136..23b53b78f387 100644 --- a/src/osd/PGLog.h +++ b/src/osd/PGLog.h @@ -1284,6 +1284,7 @@ public: eversion_t on_disk_rollback_info_trimmed_to = eversion_t(); ObjectMap::ObjectMapIterator p = store->get_omap_iterator(log_coll, log_oid); map divergent_priors; + bool must_rebuild = force_rebuild_missing; missing.may_include_deletes = false; list entries; list dups; @@ -1298,7 +1299,7 @@ public: ::decode(divergent_priors, bp); ldpp_dout(dpp, 20) << "read_log_and_missing " << divergent_priors.size() << " divergent_priors" << dendl; - assert(force_rebuild_missing); + must_rebuild = true; debug_verify_stored_missing = false; } else if (p->key() == "can_rollback_to") { ::decode(on_disk_can_rollback_to, bp); @@ -1345,7 +1346,7 @@ public: std::move(entries), std::move(dups)); - if (force_rebuild_missing || debug_verify_stored_missing) { + if (must_rebuild || debug_verify_stored_missing) { // build missing if (debug_verify_stored_missing || info.last_complete < info.last_update) { ldpp_dout(dpp, 10) @@ -1438,7 +1439,7 @@ public: } } } else { - assert(force_rebuild_missing); + assert(must_rebuild); for (map::reverse_iterator i = divergent_priors.rbegin(); i != divergent_priors.rend(); @@ -1492,7 +1493,7 @@ public: } } - if (!force_rebuild_missing) { + if (!must_rebuild) { if (clear_divergent_priors) (*clear_divergent_priors) = false; missing.flush();