From: John Spray Date: Wed, 9 Mar 2016 12:13:21 +0000 (+0000) Subject: messages: support features in MFSMap X-Git-Tag: v10.1.1~114^2~14 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=122e0d3b25938bddea56ef4bafc5bbc5cb1155aa;p=ceph.git messages: support features in MFSMap 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 --- diff --git a/src/client/Client.cc b/src/client/Client.cc index a466663af861..65a23035fe74 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -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); diff --git a/src/messages/MFSMap.h b/src/messages/MFSMap.h index dd886b521e7c..b0b28b17aa30 100644 --- a/src/messages/MFSMap.h +++ b/src/messages/MFSMap.h @@ -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); } }; diff --git a/src/mon/MDSMonitor.cc b/src/mon/MDSMonitor.cc index 2de22081afae..761b495b6306 100644 --- a/src/mon/MDSMonitor.cc +++ b/src/mon/MDSMonitor.cc @@ -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 { diff --git a/src/tools/cephfs/Dumper.h b/src/tools/cephfs/Dumper.h index 97b56a7751ec..f95a06290dbe 100644 --- a/src/tools/cephfs/Dumper.h +++ b/src/tools/cephfs/Dumper.h @@ -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); diff --git a/src/tools/cephfs/MDSUtility.cc b/src/tools/cephfs/MDSUtility.cc index b6b9eab1441c..f99ddb486727 100644 --- a/src/tools/cephfs/MDSUtility.cc +++ b/src/tools/cephfs/MDSUtility.cc @@ -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;