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));
}
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()) ||
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)
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();
}
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();
}
}
// 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);
// -----------------------------
// 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()
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)
// -- 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;
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();
mdcache->open_root();
// start new segment
- mdlog->start_new_segment(0);
+ mdlog->start_new_segment();
}
_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
}
// 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);
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
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();