]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
messages: support features in MFSMap
authorJohn Spray <john.spray@redhat.com>
Wed, 9 Mar 2016 12:13:21 +0000 (12:13 +0000)
committerJohn Spray <john.spray@redhat.com>
Tue, 22 Mar 2016 12:08:48 +0000 (12:08 +0000)
Not used for anything currently, but let's make
this class pass through the features to FSMap's
encode method for the benefit of the future
generations.

Signed-off-by: John Spray <john.spray@redhat.com>
src/client/Client.cc
src/messages/MFSMap.h
src/mon/MDSMonitor.cc
src/tools/cephfs/Dumper.h
src/tools/cephfs/MDSUtility.cc

index a466663af8616d1ac4f1762329056b3a679feeca..65a23035fe74f1adf47a624219787873147f3f8d 100644 (file)
@@ -2435,7 +2435,7 @@ void Client::handle_fs_map(MFSMap *m)
 {
   delete fsmap;
   fsmap = new FSMap;
-  fsmap->decode(m->get_encoded());
+  *fsmap = m->get_fsmap();
   m->put();
 
   signal_cond_list(waiting_for_fsmap);
index dd886b521e7ce734940e1313a144aabf4a75e5b5..b0b28b17aa301eac96220b0be57076204aae2b06 100644 (file)
@@ -26,16 +26,18 @@ class MFSMap : public Message {
   bufferlist encoded;
 
   version_t get_epoch() const { return epoch; }
-  bufferlist& get_encoded() { return encoded; }
+  const FSMap & get_fsmap() {return fsmap;}
 
   MFSMap() : 
     Message(CEPH_MSG_FS_MAP), epoch(0) {}
-  MFSMap(const uuid_d &f, FSMap *fsmap) :
-    Message(CEPH_MSG_FS_MAP), epoch(fsmap->get_epoch())
+  MFSMap(const uuid_d &f, const FSMap &fsmap_) :
+    Message(CEPH_MSG_FS_MAP), epoch(fsmap_.get_epoch())
   {
-    fsmap->encode(encoded, -1);
+    fsmap = fsmap_;
   }
 private:
+  FSMap fsmap;
+
   ~MFSMap() {}
 
 public:
@@ -48,11 +50,11 @@ public:
   void decode_payload() {
     bufferlist::iterator p = payload.begin();
     ::decode(epoch, p);
-    ::decode(encoded, p);
+    ::decode(fsmap, p);
   }
   void encode_payload(uint64_t features) {
     ::encode(epoch, payload);
-    ::encode(encoded, payload);
+    ::encode(fsmap, payload, features);
   }
 };
 
index 2de22081afaeb9b0fc6e0a522a04b4c3d34c82b7..761b495b6306cc95bd5cf57217ab4b82f18c9df2 100644 (file)
@@ -2390,7 +2390,7 @@ void MDSMonitor::check_sub(Subscription *sub)
 
   if (sub->type == "fsmap") {
     if (sub->next <= fsmap.get_epoch()) {
-      sub->session->con->send_message(new MFSMap(mon->monmap->fsid, &fsmap));
+      sub->session->con->send_message(new MFSMap(mon->monmap->fsid, fsmap));
       if (sub->onetime) {
         mon->session_map.remove_sub(sub);
       } else {
index 97b56a7751ec853b0a0d1ad73c8f327eaa16d3bc..f95a06290dbe8284ff05dc312e53b74faaa29318 100644 (file)
@@ -36,8 +36,6 @@ public:
   Dumper() : ino(-1)
   {}
 
-  void handle_mds_map(MFSMap* m);
-
   int init(mds_role_t role_);
   int recover_journal(Journaler *journaler);
   int dump(const char *dumpfile);
index b6b9eab1441cba558013f2f2cb9b71df0a079040..f99ddb4867274f584e50da571d32c5aa3239908e 100644 (file)
@@ -144,7 +144,7 @@ bool MDSUtility::ms_dispatch(Message *m)
 
 void MDSUtility::handle_mds_map(MFSMap* m)
 {
-  fsmap->decode(m->get_encoded());
+  *fsmap = m->get_fsmap();
   if (waiting_for_mds_map) {
     waiting_for_mds_map->complete(0);
     waiting_for_mds_map = NULL;