]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: encode source mds in MExportDirDiscover explicitly
authorSage Weil <sage@newdream.net>
Mon, 22 Mar 2010 16:09:21 +0000 (09:09 -0700)
committerSage Weil <sage@newdream.net>
Mon, 22 Mar 2010 18:09:24 +0000 (11:09 -0700)
This removes any dependency on the message 'source', which will
let us remove the forward hackery.

src/mds/Migrator.cc
src/messages/MExportDirDiscover.h

index 4a106637b71030d2049d178ccad52872feb0ae42..f59a7fb64a09a9a54a16f2b5bcfa6fc6c45c0db6 100644 (file)
@@ -602,7 +602,7 @@ void Migrator::export_dir(CDir *dir, int dest)
   // send ExportDirDiscover (ask target)
   filepath path;
   dir->inode->make_path(path);
-  mds->send_message_mds(new MExportDirDiscover(path, dir->dirfrag()), dest);
+  mds->send_message_mds(new MExportDirDiscover(mds->get_nodeid(), path, dir->dirfrag()), dest);
   assert(g_conf.mds_kill_export_at != 2);
 
   // start the freeze, but hold it up with an auth_pin.
@@ -1400,7 +1400,8 @@ void Migrator::export_finish(CDir *dir)
 
 void Migrator::handle_export_discover(MExportDirDiscover *m)
 {
-  assert(m->get_source().num() != mds->get_nodeid());
+  int from = m->get_source_mds();
+  assert(from != mds->get_nodeid());
 
   dout(7) << "handle_export_discover on " << m->get_path() << dendl;
 
@@ -1411,7 +1412,7 @@ void Migrator::handle_export_discover(MExportDirDiscover *m)
   if (!m->started) {
     m->started = true;
     import_state[df] = IMPORT_DISCOVERING;
-    import_peer[df] = m->get_source().num();
+    import_peer[df] = from;
   }
 
   // am i retrying after ancient path_traverse results?
index ef4879fd2b9b051a129c2c9d8de48f08056f19c1..381e34266d736c4578feaf78a69930eafc511a2f 100644 (file)
 #include "include/types.h"
 
 class MExportDirDiscover : public Message {
+  int32_t from;
   dirfrag_t dirfrag;
   filepath path;
 
  public:
+  int get_source_mds() { return from; }
   inodeno_t get_ino() { return dirfrag.ino; }
   dirfrag_t get_dirfrag() { return dirfrag; }
   filepath& get_path() { return path; }
@@ -32,8 +34,9 @@ class MExportDirDiscover : public Message {
   MExportDirDiscover() :     
     Message(MSG_MDS_EXPORTDIRDISCOVER),
     started(false) { }
-  MExportDirDiscover(filepath& p, dirfrag_t df) : 
+  MExportDirDiscover(int f, filepath& p, dirfrag_t df) : 
     Message(MSG_MDS_EXPORTDIRDISCOVER),
+    from(f), 
     dirfrag(df),
     path(p),
     started(false)
@@ -45,11 +48,13 @@ class MExportDirDiscover : public Message {
 
   virtual void decode_payload() {
     bufferlist::iterator p = payload.begin();
+    ::decode(from, p);
     ::decode(dirfrag, p);
     ::decode(path, p);
   }
 
   virtual void encode_payload() {
+    ::encode(from, payload);
     ::encode(dirfrag, payload);
     ::encode(path, payload);
   }