]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: issue new caps before starting log entry 1641/head
authorYan, Zheng <zheng.z.yan@intel.com>
Fri, 11 Apr 2014 00:21:40 +0000 (08:21 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Fri, 11 Apr 2014 00:39:55 +0000 (08:39 +0800)
Locker::issue_new_caps() calls Locker::eval(), which may dispatch
other requests.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Server.cc

index 75f4612ebf5181fd2a667eeb27e69c22f3f686bf..88b9463d3ad663ee2ebd10f0d066e5a2f906eea4 100644 (file)
@@ -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();