From 907b357e8fd8c7c8d5652e24fc1ee533ed442029 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 27 Oct 2016 18:36:55 -0700 Subject: [PATCH] ReplicatedPG::calc_trim_to: don't trim past can_rollback_to Signed-off-by: Samuel Just --- src/osd/ReplicatedPG.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 8ee3450cbdb8e..6fdadd310d6ca 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1528,8 +1528,11 @@ void ReplicatedPG::calc_trim_to() target = cct->_conf->osd_max_pg_log_entries; } - if (min_last_complete_ondisk != eversion_t() && - min_last_complete_ondisk != pg_trim_to && + eversion_t limit = MIN( + min_last_complete_ondisk, + pg_log.get_can_rollback_to()); + if (limit != eversion_t() && + limit != pg_trim_to && pg_log.get_log().approx_size() > target) { size_t num_to_trim = pg_log.get_log().approx_size() - target; if (num_to_trim < cct->_conf->osd_pg_log_trim_min) { @@ -1540,8 +1543,8 @@ void ReplicatedPG::calc_trim_to() for (size_t i = 0; i < num_to_trim; ++i) { new_trim_to = it->version; ++it; - if (new_trim_to > min_last_complete_ondisk) { - new_trim_to = min_last_complete_ondisk; + if (new_trim_to > limit) { + new_trim_to = limit; dout(10) << "calc_trim_to trimming to min_last_complete_ondisk" << dendl; break; } -- 2.39.5