From: Yan, Zheng Date: Wed, 19 Mar 2014 03:24:53 +0000 (+0800) Subject: mds: avoid infinite loop in MDLog::submit_entry() X-Git-Tag: v0.79~111^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=272b53b22cbbdce4236e080ceb4fced5d669e2e1;p=ceph.git mds: avoid infinite loop in MDLog::submit_entry() Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index cacbebfd3f66..a71eb025622e 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -219,13 +219,14 @@ void MDLog::submit_entry(LogEvent *le, Context *c) uint64_t last_seg = get_last_segment_offset(); uint64_t period = journaler->get_layout_period(); // start a new segment if there are none or if we reach end of last segment - if (journaler->get_write_pos()/period != last_seg/period) { + if (le->get_type() == EVENT_SUBTREEMAP) { + // avoid infinite loop + } else if (journaler->get_write_pos()/period != last_seg/period) { dout(10) << "submit_entry also starting new segment: last = " << last_seg << ", cur pos = " << journaler->get_write_pos() << dendl; start_new_segment(); } else if (g_conf->mds_debug_subtrees && - le->get_type() != EVENT_SUBTREEMAP_TEST && - le->get_type() != EVENT_SUBTREEMAP) { + le->get_type() != EVENT_SUBTREEMAP_TEST) { // debug: journal this every time to catch subtree replay bugs. // use a different event id so it doesn't get interpreted as a // LogSegment boundary on replay.