]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add hooks to test multimds link/unlink failures
authorSage Weil <sage@newdream.net>
Thu, 4 Aug 2011 00:41:10 +0000 (17:41 -0700)
committerSage Weil <sage@newdream.net>
Thu, 4 Aug 2011 01:04:33 +0000 (18:04 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/common/config.cc
src/common/config.h
src/mds/Server.cc

index bfafeb6a3d05cc2b004e5a4d218db1774b4fbb27..c1a5d1eb2889d618387cb46aff588c115834a1a6 100644 (file)
@@ -313,6 +313,7 @@ struct config_option config_optionsp[] = {
   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),
index 0a354dd85114bc0250841c0fbfb9c490ca6c10b6..d60a0027103a36b106d20160260dc1236de61fe4 100644 (file)
@@ -379,6 +379,7 @@ public:
   int mds_kill_mdstable_at;
   int mds_kill_export_at;
   int mds_kill_import_at;
+  int mds_kill_link_at;
   int mds_kill_rename_at;
 
   bool mds_wipe_sessions;
index 53977dfa6194a51df4cf2355fa84261b9cf31d7c..ecd6718dedaca09cd399bb9b441b25cb869815a6 100644 (file)
@@ -3796,6 +3796,7 @@ void Server::handle_client_link(MDRequest *mdr)
   }
 
   // go!
+  assert(g_conf->mds_kill_link_at != 1);
 
   // local or remote?
   if (targeti->is_auth()) 
@@ -3931,7 +3932,7 @@ void Server::_link_remote(MDRequest *mdr, bool inc, CDentry *dn, CInode *targeti
   }
   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();
@@ -3974,6 +3975,8 @@ void Server::_link_remote_finish(MDRequest *mdr, bool inc,
           << (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();
@@ -4031,6 +4034,8 @@ void Server::handle_slave_link_prep(MDRequest *mdr)
           << " 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;
@@ -4060,6 +4065,8 @@ void Server::handle_slave_link_prep(MDRequest *mdr)
     }
   }
 
+  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,
@@ -4119,6 +4126,8 @@ void Server::_logged_slave_link(MDRequest *mdr, CInode *targeti)
   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();
@@ -4155,6 +4164,8 @@ void Server::_commit_slave_link(MDRequest *mdr, int r, CInode *targeti)
           << " r=" << r
           << " " << *targeti << dendl;
 
+  assert(g_conf->mds_kill_link_at != 7);
+
   if (r == 0) {
     // drop our pins, etc.
     mdr->cleanup();
@@ -4172,6 +4183,9 @@ void Server::_commit_slave_link(MDRequest *mdr, int r, CInode *targeti)
 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);
@@ -4199,6 +4213,8 @@ void Server::do_link_rollback(bufferlist &rbl, int master, MDRequest *mdr)
           << " ino " << rollback.ino
           << dendl;
 
+  assert(g_conf->mds_kill_link_at != 9);
+
   Mutation *mut = mdr;
   if (!mut) {
     assert(mds->is_resolve());
@@ -4252,6 +4268,9 @@ void Server::do_link_rollback(bufferlist &rbl, int master, MDRequest *mdr)
 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);
@@ -4269,6 +4288,8 @@ void Server::handle_slave_link_prep_ack(MDRequest *mdr, MMDSSlaveRequest *m)
           << " " << *m << dendl;
   int from = m->get_source().num();
 
+  assert(g_conf->mds_kill_link_at != 11);
+
   // note slave
   mdr->more()->slaves.insert(from);