From cd25c1d79d189b4e0389927e7c20d75afd2661d9 Mon Sep 17 00:00:00 2001 From: Neha Ojha Date: Mon, 11 Feb 2019 17:21:53 -0800 Subject: [PATCH] osd/PGLog: preserve original_crt in proc_replica_log() This is to prevent rolling back further than deleted object version. Signed-off-by: Neha Ojha --- src/osd/PGLog.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/osd/PGLog.cc b/src/osd/PGLog.cc index b0bf4deb5257a..295019dc556f7 100644 --- a/src/osd/PGLog.cc +++ b/src/osd/PGLog.cc @@ -269,6 +269,11 @@ void PGLog::proc_replica_log( limit : first_non_divergent->version; + // We need to preserve the original crt before it gets updated in rewind_from_head(). + // Later, in merge_object_divergent_entries(), we use it to check whether we can rollback + // a divergent entry or not. + eversion_t original_crt = log.get_can_rollback_to(); + dout(20) << __func__ << " original_crt = " << original_crt << dendl; IndexedLog folog(olog); auto divergent = folog.rewind_from_head(lu); _merge_divergent_entries( @@ -276,7 +281,7 @@ void PGLog::proc_replica_log( divergent, oinfo, olog.get_can_rollback_to(), - olog.get_can_rollback_to(), + original_crt, omissing, 0, this); -- 2.39.5