From: Yan, Zheng Date: Wed, 6 Apr 2016 12:59:22 +0000 (+0800) Subject: messages: add MFSMapUser X-Git-Tag: v11.0.0~241^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4276042edcaa22336afb575a61705b6a2c4d7f1f;p=ceph.git messages: add MFSMapUser For mon clients that subscribe to 'fsmap.user' Signed-off-by: Yan, Zheng --- diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 70f83e3d2b9..afe3e3618ab 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -133,6 +133,8 @@ struct ceph_dir_layout { /* FSMap subscribers (see all MDS clusters at once) */ #define CEPH_MSG_FS_MAP 45 +/* FSMapUser subscribers (get MDS clusters name->ID mapping) */ +#define CEPH_MSG_FS_MAP_USER 103 /* watch-notify operations */ diff --git a/src/messages/MFSMapUser.h b/src/messages/MFSMapUser.h new file mode 100644 index 00000000000..ae222c27498 --- /dev/null +++ b/src/messages/MFSMapUser.h @@ -0,0 +1,59 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab +/* + * Ceph - scalable distributed file system + * + * Copyright (C) 2004-2006 Sage Weil + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software + * Foundation. See file COPYING. + */ + + +#ifndef CEPH_MFSMAPCOMPACT_H +#define CEPH_MFSMAPCOMPACT_H + +#include "msg/Message.h" +#include "mds/FSMapUser.h" +#include "include/ceph_features.h" + +class MFSMapUser : public Message { + public: + epoch_t epoch; + + version_t get_epoch() const { return epoch; } + const FSMapUser & get_fsmap() { return fsmap; } + + MFSMapUser() : + Message(CEPH_MSG_FS_MAP_USER), epoch(0) {} + MFSMapUser(const uuid_d &f, const FSMapUser &fsmap_) : + Message(CEPH_MSG_FS_MAP_USER), epoch(fsmap_.epoch) + { + fsmap = fsmap_; + } +private: + FSMapUser fsmap; + + ~MFSMapUser() {} + +public: + const char *get_type_name() const { return "fsmap.user"; } + void print(ostream& out) const { + out << "fsmap.user(e " << epoch << ")"; + } + + // marshalling + void decode_payload() { + bufferlist::iterator p = payload.begin(); + ::decode(epoch, p); + ::decode(fsmap, p); + } + void encode_payload(uint64_t features) { + ::encode(epoch, payload); + ::encode(fsmap, payload, features); + } +}; + +#endif diff --git a/src/messages/Makefile.am b/src/messages/Makefile.am index 0f4257bd487..0f74e15f1fe 100644 --- a/src/messages/Makefile.am +++ b/src/messages/Makefile.am @@ -49,6 +49,7 @@ noinst_HEADERS += \ messages/MMDSFragmentNotify.h \ messages/MMDSMap.h \ messages/MFSMap.h \ + messages/MFSMapUser.h \ messages/MMDSOpenIno.h \ messages/MMDSOpenInoReply.h \ messages/MMDSResolve.h \ diff --git a/src/msg/Message.cc b/src/msg/Message.cc index f84004bd7b1..010caf3d73a 100644 --- a/src/msg/Message.cc +++ b/src/msg/Message.cc @@ -112,6 +112,7 @@ using namespace std; #include "messages/MMDSMap.h" #include "messages/MFSMap.h" +#include "messages/MFSMapUser.h" #include "messages/MMDSBeacon.h" #include "messages/MMDSLoadTargets.h" #include "messages/MMDSResolve.h" @@ -578,6 +579,9 @@ Message *decode_message(CephContext *cct, int crcflags, case CEPH_MSG_FS_MAP: m = new MFSMap; break; + case CEPH_MSG_FS_MAP_USER: + m = new MFSMapUser; + break; case MSG_MDS_BEACON: m = new MMDSBeacon; break;