]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: pass finish context to MDlog::submit_entry()
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 24 Jun 2014 07:47:30 +0000 (15:47 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Fri, 27 Jun 2014 07:45:55 +0000 (15:45 +0800)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Locker.cc
src/mds/MDCache.cc
src/mds/MDLog.cc
src/mds/MDLog.h
src/mds/MDS.cc
src/mds/MDSTableServer.cc
src/mds/Migrator.cc

index 13a42f022bd08695f51708df3f9d7f01246566e3..8a52d33ba985b89fdcb29416ee8691bcc657e1ac 100644 (file)
@@ -2795,9 +2795,8 @@ void Locker::_do_snap_update(CInode *in, snapid_t snap, int dirty, snapid_t foll
   mdcache->predirty_journal_parents(mut, &le->metablob, in, 0, PREDIRTY_PRIMARY, 0, follows);
   mdcache->journal_dirty_inode(mut.get(), &le->metablob, in, follows);
 
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(new C_Locker_FileUpdate_finish(this, in, mut, false,
-                                                          client, NULL, ack));
+  mds->mdlog->submit_entry(le, new C_Locker_FileUpdate_finish(this, in, mut, false,
+                                                             client, NULL, ack));
 }
 
 
@@ -3033,9 +3032,8 @@ bool Locker::_do_cap_update(CInode *in, Capability *cap,
   mdcache->predirty_journal_parents(mut, &le->metablob, in, 0, PREDIRTY_PRIMARY, 0, follows);
   mdcache->journal_dirty_inode(mut.get(), &le->metablob, in, follows);
 
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(new C_Locker_FileUpdate_finish(this, in, mut, change_max, 
-                                                          client, cap, ack));
+  mds->mdlog->submit_entry(le, new C_Locker_FileUpdate_finish(this, in, mut, change_max,
+                                                             client, cap, ack));
   // only flush immediately if the lock is unstable, or unissued caps are wanted, or max_size is 
   // changing
   if (((dirty & (CEPH_CAP_FILE_EXCL|CEPH_CAP_FILE_WR)) && !in->filelock.is_stable()) ||
@@ -3904,8 +3902,7 @@ void Locker::scatter_writebehind(ScatterLock *lock)
   
   in->finish_scatter_gather_update_accounted(lock->get_type(), mut, &le->metablob);
 
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(new C_Locker_ScatterWB(this, lock, mut));
+  mds->mdlog->submit_entry(le, new C_Locker_ScatterWB(this, lock, mut));
 }
 
 void Locker::scatter_writebehind_finish(ScatterLock *lock, MutationRef& mut)
index 8737fd2c79132359a8958cee23173855aba99c89..e3e352a80669e2e20d419116e15676bf08cc2821 100644 (file)
@@ -468,8 +468,7 @@ void MDCache::_create_system_file(CDir *dir, const char *name, CInode *in, Conte
   if (mdir)
     le->metablob.add_new_dir(mdir); // dirty AND complete AND new
 
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(new C_MDC_CreateSystemFile(this, mut, dn, dpv, fin));
+  mds->mdlog->submit_entry(le, new C_MDC_CreateSystemFile(this, mut, dn, dpv, fin));
   mds->mdlog->flush();
 }
 
@@ -876,8 +875,7 @@ void MDCache::try_subtree_merge_at(CDir *dir, bool do_eval)
       le->metablob.add_dir_context(in->get_parent_dn()->get_dir());
       journal_dirty_inode(mut.get(), &le->metablob, in);
       
-      mds->mdlog->submit_entry(le);
-      mds->mdlog->wait_for_safe(new C_MDC_SubtreeMergeWB(this, in, mut));
+      mds->mdlog->submit_entry(le, new C_MDC_SubtreeMergeWB(this, in, mut));
       mds->mdlog->flush();
     }
   } 
@@ -3096,8 +3094,8 @@ void MDCache::handle_resolve_ack(MMDSResolveAck *ack)
 
       // log commit
       mds->mdlog->start_submit_entry(new ESlaveUpdate(mds->mdlog, "unknown", p->first, from,
-                                                     ESlaveUpdate::OP_COMMIT, su->origop));
-      mds->mdlog->wait_for_safe(new C_MDC_SlaveCommit(this, from, p->first));
+                                                     ESlaveUpdate::OP_COMMIT, su->origop),
+                                    new C_MDC_SlaveCommit(this, from, p->first));
       mds->mdlog->flush();
 
       finish_uncommitted_slave_update(p->first, from);
index d9dfd4ad2d6d463f73f5ead6e4339b3a5b0458ab..11019633956a2ec511bde8681e1288abb9e90150 100644 (file)
@@ -286,14 +286,10 @@ void MDLog::cap()
 // -----------------------------
 // segments
 
-void MDLog::start_new_segment(Context *onsync)
+void MDLog::start_new_segment()
 {
   prepare_new_segment();
-  journal_segment_subtree_map();
-  if (onsync) {
-    wait_for_safe(onsync);
-    flush();
-  }
+  journal_segment_subtree_map(NULL);
 }
 
 void MDLog::prepare_new_segment()
@@ -311,10 +307,10 @@ void MDLog::prepare_new_segment()
   mds->mdcache->advance_stray();
 }
 
-void MDLog::journal_segment_subtree_map()
+void MDLog::journal_segment_subtree_map(Context *onsync)
 {
   dout(7) << __func__ << dendl;
-  submit_entry(mds->mdcache->create_subtree_map());
+  submit_entry(mds->mdcache->create_subtree_map(), onsync);
 }
 
 void MDLog::trim(int m)
index b37453560730cd858f92bcabc16ea388d0c48f32..a04b2f8251bb5c2f62c67343bb45e46ed1b9a0b0 100644 (file)
@@ -174,9 +174,9 @@ public:
 
 
   // -- segments --
-  void start_new_segment(Context *onsync=0);
+  void start_new_segment();
   void prepare_new_segment();
-  void journal_segment_subtree_map();
+  void journal_segment_subtree_map(Context *onsync=0);
 
   LogSegment *peek_current_segment() {
     return segments.empty() ? NULL : segments.rbegin()->second;
index 3c54ab949e501f27929f464bc6ec0056cb263fde..e97deb0f8248d245c4d063f485b6ed9b3aff325b 100644 (file)
@@ -1311,8 +1311,7 @@ void MDS::boot_create()
   assert(g_conf->mds_kill_create_at != 1);
 
   // ok now journal it
-  mdlog->journal_segment_subtree_map();
-  mdlog->wait_for_safe(fin.new_sub());
+  mdlog->journal_segment_subtree_map(fin.new_sub());
   mdlog->flush();
 
   fin.activate();
@@ -1424,7 +1423,7 @@ void MDS::starting_done()
   mdcache->open_root();
 
   // start new segment
-  mdlog->start_new_segment(0);
+  mdlog->start_new_segment();
 }
 
 
index b7752468c24e75e99e49da3572acb01c5dd6a633..f72ecc6e5d07413147d106b448b6848261fd9dd8 100644 (file)
@@ -87,8 +87,8 @@ void MDSTableServer::handle_commit(MMDSTableRequest *req)
 
     _note_commit(tid);
     mds->mdlog->start_submit_entry(new ETableServer(table, TABLESERVER_OP_COMMIT, 0, -1, 
-                                                   tid, version));
-    mds->mdlog->wait_for_safe(new C_Commit(this, req));
+                                                   tid, version),
+                                  new C_Commit(this, req));
   }
   else if (tid <= version) {
     dout(0) << "got commit for tid " << tid << " <= " << version 
index 7ba90029ce3b33403310373270272f7c6f2317d9..f7f137523025e3993f6fa287b56e90c1038a608a 100644 (file)
@@ -1567,8 +1567,7 @@ void Migrator::handle_export_ack(MExportDirAck *m)
   }
 
   // log export completion, then finish (unfreeze, trigger finish context, etc.)
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(new C_MDS_ExportFinishLogged(this, dir));
+  mds->mdlog->submit_entry(le, new C_MDS_ExportFinishLogged(this, dir));
   mds->mdlog->flush();
   assert (g_conf->mds_kill_export_at != 10);
   
@@ -2252,8 +2251,7 @@ void Migrator::handle_export_dir(MExportDir *m)
   assert (g_conf->mds_kill_import_at != 6);
 
   // log it
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(onlogged);
+  mds->mdlog->submit_entry(le, onlogged);
   mds->mdlog->flush();
 
   // some stats
@@ -3031,9 +3029,7 @@ void Migrator::handle_export_caps(MExportCaps *ex)
   version_t pv = mds->server->prepare_force_open_sessions(finish->client_map, finish->sseqmap);
   
   ESessions *le = new ESessions(pv, ex->client_map);
-  mds->mdlog->start_entry(le);
-  mds->mdlog->submit_entry(le);
-  mds->mdlog->wait_for_safe(finish);
+  mds->mdlog->start_submit_entry(le, finish);
   mds->mdlog->flush();
 
   ex->put();