OPTION(mds_kill_import_at, OPT_INT, 0)
OPTION(mds_kill_link_at, OPT_INT, 0)
OPTION(mds_kill_rename_at, OPT_INT, 0)
+OPTION(mds_kill_openc_at, OPT_INT, 0)
+OPTION(mds_kill_journal_at, OPT_INT, 0)
+OPTION(mds_kill_journal_expire_at, OPT_INT, 0)
+OPTION(mds_kill_journal_replay_at, OPT_INT, 0)
OPTION(mds_inject_traceless_reply_probability, OPT_DOUBLE, 0) /* percentage
of MDS modify replies to skip sending the
client a trace on [0-1]*/
// did we import srci? if so, explicitly ack that import that, before we unlock and reply.
+ assert(g_conf->mds_kill_rename_at != 7);
// backtrace
if (destdnl->inode->is_dir()) {
// replace previous backtrace on this inode with myself
// queue an updated backtrace
mdr->ls->queue_backtrace_update(destdnl->inode, destdnl->inode->inode.layout.fl_pg_pool);
}
+ assert(g_conf->mds_kill_rename_at != 8);
// reply
MClientReply *reply = new MClientReply(mdr->client_request, 0);
dout(6) << "LogSegment(" << offset << ").try_to_expire" << dendl;
+ assert(g_conf->mds_kill_journal_expire_at != 1);
+
// commit dirs
for (elist<CDir*>::iterator p = new_dirfrags.begin(); !p.end(); ++p) {
dout(20) << " new_dirfrag " << **p << dendl;
mds->locker->scatter_nudge(&in->nestlock, gather_bld.new_sub());
}
+ assert(g_conf->mds_kill_journal_expire_at != 2);
+
// open files
if (!open_files.empty()) {
assert(!mds->mdlog->is_capped()); // hmm FIXME
}
}
+ assert(g_conf->mds_kill_journal_expire_at != 3);
+
// backtraces to be stored/updated
for (elist<BacktraceInfo*>::iterator p = update_backtraces.begin(); !p.end(); ++p) {
BacktraceInfo *btinfo = *p;
store_backtrace_update(mds, btinfo, gather_bld.new_sub());
}
+ assert(g_conf->mds_kill_journal_expire_at != 4);
+
// slave updates
for (elist<MDSlaveUpdate*>::iterator p = slave_updates.begin(member_offset(MDSlaveUpdate,
item));
dout(6) << "LogSegment(" << offset << ").try_to_expire waiting" << dendl;
mds->mdlog->flush();
} else {
+ assert(g_conf->mds_kill_journal_expire_at != 5);
dout(6) << "LogSegment(" << offset << ").try_to_expire success" << dendl;
}
}
assert(logseg);
+ assert(g_conf->mds_kill_journal_replay_at != 1);
+
for (list<std::tr1::shared_ptr<fullbit> >::iterator p = roots.begin(); p != roots.end(); p++) {
CInode *in = mds->mdcache->get_inode((*p)->inode.ino);
bool isnew = in ? false:true;
(in->is_multiversion() && in->first > p->dnfirst));
}
+ assert(g_conf->mds_kill_journal_replay_at != 2);
+
// store backtrace for allocated inos (create, mkdir, symlink, mknod)
if (allocated_ino || used_preallocated_ino) {
if (in->inode.is_dir()) {
}
}
+ assert(g_conf->mds_kill_journal_replay_at != 3);
+
if (renamed_dirino) {
if (renamed_diri) {
assert(unlinked.count(renamed_diri));
// update segment
update_segment(logseg);
+
+ assert(g_conf->mds_kill_journal_replay_at != 4);
}
// -----------------------