From b8b172d241e8f089ae278ec544f0cf55db71d6b8 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Tue, 14 Dec 2010 16:45:50 -0800 Subject: [PATCH] MDS: make standby_trim_segments functional. Hurray, hot standbys work! Signed-off-by: Greg Farnum --- src/mds/MDS.cc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 7aca8f4d24d8b..deb435da3cb94 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -1292,6 +1292,30 @@ void MDS::replay_done() void MDS::standby_trim_segments() { + dout(10) << "standby_trim_segments" << dendl; + LogSegment *seg = NULL; + uint64_t expire_pos = mdlog->get_journaler()->get_expire_pos(); + dout(10) << "expire_pos=" << expire_pos << dendl; + bool removed_segment = false; + while ((seg=mdlog->get_oldest_segment())->end <= expire_pos) { + dout(0) << "removing segment" << dendl; + seg->dirty_dirfrags.clear_list(); + seg->new_dirfrags.clear_list(); + seg->dirty_inodes.clear_list(); + seg->dirty_dentries.clear_list(); + seg->open_files.clear_list(); + seg->renamed_files.clear_list(); + seg->dirty_dirfrag_dir.clear_list(); + seg->dirty_dirfrag_nest.clear_list(); + seg->dirty_dirfrag_dirfragtree.clear_list(); + mdlog->remove_oldest_segment(); + removed_segment = true; + } + + if (removed_segment) { + dout(20) << "calling mdcache->trim!" << dendl; + mdcache->trim(-1); + } else dout(20) << "removed no segments!" << dendl; return; } -- 2.39.5