From: Neha Ojha Date: Mon, 16 Jul 2018 21:46:21 +0000 (-0700) Subject: osd: make calc_trim_to() independent of min_last_complete_ondisk X-Git-Tag: v13.2.2~50^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=620e14ddfc2a72df6cba40aacf1897572ed21c36;p=ceph.git osd: make calc_trim_to() independent of min_last_complete_ondisk Signed-off-by: Neha Ojha (cherry picked from commit 1ae5fd32c92ea2f025344c663535d00f71f2cdda) --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 02ab4b7daba1..4534f7f7de9e 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); } }