From 3db74861280445aae96dbb3a4b8164d463259dcb Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Fri, 11 Apr 2014 08:21:40 +0800 Subject: [PATCH] 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 --- src/mds/Server.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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(); -- 2.47.3