OPTION(mds_kill_mdstable_at, OPT_INT, 0),
OPTION(mds_kill_export_at, OPT_INT, 0),
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_wipe_sessions, OPT_BOOL, 0),
OPTION(mds_wipe_ino_prealloc, OPT_BOOL, 0),
}
// go!
+ assert(g_conf->mds_kill_link_at != 1);
// local or remote?
if (targeti->is_auth())
}
dout(10) << " targeti auth has prepared nlink++/--" << dendl;
- //assert(0); // test hack: verify that remote slave can do a live rollback.
+ assert(g_conf->mds_kill_link_at != 2);
// add to event
mdr->ls = mdlog->get_current_segment();
<< (inc ? "link ":"unlink ")
<< *dn << " to " << *targeti << dendl;
+ assert(g_conf->mds_kill_link_at != 3);
+
if (inc) {
// link the new dentry
dn->pop_projected_linkage();
<< " on " << mdr->slave_request->get_object_info()
<< dendl;
+ assert(g_conf->mds_kill_link_at != 4);
+
CInode *targeti = mdcache->get_inode(mdr->slave_request->get_object_info().ino);
assert(targeti);
dout(10) << "targeti " << *targeti << dendl;
}
}
+ assert(g_conf->mds_kill_link_at != 5);
+
// journal it
mdr->ls = mdlog->get_current_segment();
ESlaveUpdate *le = new ESlaveUpdate(mdlog, "slave_link_prep", mdr->reqid, mdr->slave_to_mds,
dout(10) << "_logged_slave_link " << *mdr
<< " " << *targeti << dendl;
+ assert(g_conf->mds_kill_link_at != 6);
+
// update the target
targeti->pop_and_dirty_projected_inode(mdr->ls);
mdr->apply();
<< " r=" << r
<< " " << *targeti << dendl;
+ assert(g_conf->mds_kill_link_at != 7);
+
if (r == 0) {
// drop our pins, etc.
mdr->cleanup();
void Server::_committed_slave(MDRequest *mdr)
{
dout(10) << "_committed_slave " << *mdr << dendl;
+
+ assert(g_conf->mds_kill_link_at != 8);
+
MMDSSlaveRequest *req = new MMDSSlaveRequest(mdr->reqid, mdr->attempt,
MMDSSlaveRequest::OP_COMMITTED);
mds->send_message_mds(req, mdr->slave_to_mds);
<< " ino " << rollback.ino
<< dendl;
+ assert(g_conf->mds_kill_link_at != 9);
+
Mutation *mut = mdr;
if (!mut) {
assert(mds->is_resolve());
void Server::_link_rollback_finish(Mutation *mut, MDRequest *mdr)
{
dout(10) << "_link_rollback_finish" << dendl;
+
+ assert(g_conf->mds_kill_link_at != 10);
+
mut->apply();
if (mdr)
mds->mdcache->request_finish(mdr);
<< " " << *m << dendl;
int from = m->get_source().num();
+ assert(g_conf->mds_kill_link_at != 11);
+
// note slave
mdr->more()->slaves.insert(from);