From: Yan, Zheng Date: Wed, 2 Oct 2013 03:43:12 +0000 (+0800) Subject: mds: return -EAGAIN if standby replay falls behind X-Git-Tag: v0.71~41 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d2cb2bf6bac83ac6db9df6cb876317d30e7493cc;p=ceph.git mds: return -EAGAIN if standby replay falls behind standby replay may fall behind and get -ENOENT when reading the journal. return -EAGAIN in this case, it makes the MDS respawn itself. fixes: #5458 Signed-off-by: Yan, Zheng Reviewed-by: Sage Weil --- diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index bd89da71495..cacbebfd3f6 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -499,7 +499,11 @@ void MDLog::_replay_thread() if (journaler->get_error()) { r = journaler->get_error(); dout(0) << "_replay journaler got error " << r << ", aborting" << dendl; - if (r == -EINVAL) { + if (r == -ENOENT) { + // journal has been trimmed by somebody else? + assert(journaler->is_readonly()); + r = -EAGAIN; + } else if (r == -EINVAL) { if (journaler->get_read_pos() < journaler->get_expire_pos()) { // this should only happen if you're following somebody else assert(journaler->is_readonly());