From 620e14ddfc2a72df6cba40aacf1897572ed21c36 Mon Sep 17 00:00:00 2001 From: Neha Ojha Date: Mon, 16 Jul 2018 14:46:21 -0700 Subject: [PATCH] osd: make calc_trim_to() independent of min_last_complete_ondisk Signed-off-by: Neha Ojha (cherry picked from commit 1ae5fd32c92ea2f025344c663535d00f71f2cdda) --- src/osd/PrimaryLogPG.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 02ab4b7daba10..4534f7f7de9e0 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -1624,15 +1624,18 @@ void PrimaryLogPG::calc_trim_to() PG_STATE_BACKFILL_TOOFULL)) { target = cct->_conf->osd_max_pg_log_entries; } + // limit pg log trimming up to the head of the log + eversion_t limit = pg_log.get_head(); + dout(10) << __func__ << " limit = " << limit << dendl; - eversion_t limit = std::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) { + dout(10) << __func__ << " approx pg log length = " + << pg_log.get_log().approx_size() << dendl; size_t num_to_trim = std::min(pg_log.get_log().approx_size() - target, cct->_conf->osd_pg_log_trim_max); + dout(10) << __func__ << " num_to_trim = " << num_to_trim << dendl; if (num_to_trim < cct->_conf->osd_pg_log_trim_min && cct->_conf->osd_pg_log_trim_max >= cct->_conf->osd_pg_log_trim_min) { return; @@ -1642,16 +1645,15 @@ void PrimaryLogPG::calc_trim_to() for (size_t i = 0; i < num_to_trim; ++i) { new_trim_to = it->version; ++it; - if (new_trim_to > limit) { + if (new_trim_to >= limit) { new_trim_to = limit; - dout(10) << "calc_trim_to trimming to min_last_complete_ondisk" << dendl; + dout(10) << "calc_trim_to trimming to limit: " << limit << dendl; break; } } dout(10) << "calc_trim_to " << pg_trim_to << " -> " << new_trim_to << dendl; pg_trim_to = new_trim_to; assert(pg_trim_to <= pg_log.get_head()); - assert(pg_trim_to <= min_last_complete_ondisk); } } -- 2.39.5