From: Yan, Zheng Date: Fri, 11 Apr 2014 00:21:40 +0000 (+0800) Subject: mds: issue new caps before starting log entry X-Git-Tag: v0.80-rc1~60^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F1641%2Fhead;p=ceph.git mds: issue new caps before starting log entry Locker::issue_new_caps() calls Locker::eval(), which may dispatch other requests. Signed-off-by: Yan, Zheng --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 75f4612ebf51..88b9463d3ad6 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -3313,6 +3313,9 @@ void Server::do_open_truncate(MDRequestRef& mdr, int cmode) dout(10) << "do_open_truncate " << *in << dendl; + SnapRealm *realm = in->find_snaprealm(); + mds->locker->issue_new_caps(in, cmode, mdr->session, realm, mdr->client_request->is_replay()); + mdr->ls = mdlog->get_current_segment(); EUpdate *le = new EUpdate(mdlog, "open_truncate"); mdlog->start_entry(le); @@ -3341,10 +3344,6 @@ void Server::do_open_truncate(MDRequestRef& mdr, int cmode) mdcache->predirty_journal_parents(mdr, &le->metablob, in, 0, PREDIRTY_PRIMARY, false); mdcache->journal_dirty_inode(mdr.get(), &le->metablob, in); - // do the open - SnapRealm *realm = in->find_snaprealm(); - mds->locker->issue_new_caps(in, cmode, mdr->session, realm, mdr->client_request->is_replay()); - // make sure ino gets into the journal le->metablob.add_opened_ino(in->ino()); LogSegment *ls = mds->mdlog->get_current_segment();