From: Samuel Just Date: Mon, 9 Mar 2015 15:25:27 +0000 (-0700) Subject: PGLog: split divergent priors as well X-Git-Tag: v0.94~39^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bbe231a61fc06a1a668e6b831fb8224526721f93;p=ceph.git PGLog: split divergent priors as well Signed-off-by: Samuel Just --- diff --git a/src/osd/PGLog.h b/src/osd/PGLog.h index 7d18f77c68c..ffffe099c9e 100644 --- a/src/osd/PGLog.h +++ b/src/osd/PGLog.h @@ -497,6 +497,19 @@ public: missing.split_into(child_pgid, split_bits, &(opg_log->missing)); opg_log->mark_dirty_to(eversion_t::max()); mark_dirty_to(eversion_t::max()); + + unsigned mask = ~((~0)<::iterator i = divergent_priors.begin(); + i != divergent_priors.end(); + ) { + if ((i->second.get_hash() & mask) == child_pgid.m_seed) { + opg_log->add_divergent_prior(i->first, i->second); + divergent_priors.erase(i++); + dirty_divergent_priors = true; + } else { + ++i; + } + } } void recover_got(hobject_t oid, eversion_t v, pg_info_t &info) {