]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/messages/MMDSCacheRejoin.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / messages / MMDSCacheRejoin.h
index 985adb524076c80f971b61dc45732d028d88ab89..8a8f35a886d0061d006c707c1511d4b18cf01a7b 100644 (file)
 
 // sent from replica to auth
 
-class MMDSCacheRejoin : public MessageInstance<MMDSCacheRejoin> {
+class MMDSCacheRejoin : public SafeMessage {
 public:
-  friend factory;
-private:
-
-  static constexpr int HEAD_VERSION = 2;
-  static constexpr int COMPAT_VERSION = 1;
-
- public:
   static constexpr int OP_WEAK    = 1;  // replica -> auth, i exist, + maybe open files.
   static constexpr int OP_STRONG  = 2;  // replica -> auth, i exist, + open files and lock state.
   static constexpr int OP_ACK     = 3;  // auth -> replica, here is your lock state.
@@ -147,9 +140,6 @@ private:
   };
   WRITE_CLASS_ENCODER(dn_weak)
 
-  // -- data --
-  int32_t op;
-
   struct lock_bls {
     bufferlist file, nest, dft;
     void encode(bufferlist& bl) const {
@@ -167,28 +157,6 @@ private:
   };
   WRITE_CLASS_ENCODER(lock_bls)
 
-  // weak
-  map<inodeno_t, map<string_snap_t, dn_weak> > weak;
-  set<dirfrag_t> weak_dirfrags;
-  set<vinodeno_t> weak_inodes;
-  map<inodeno_t, lock_bls> inode_scatterlocks;
-
-  // strong
-  map<dirfrag_t, dirfrag_strong> strong_dirfrags;
-  map<dirfrag_t, map<string_snap_t, dn_strong> > strong_dentries;
-  map<vinodeno_t, inode_strong> strong_inodes;
-
-  // open
-  map<inodeno_t,map<client_t, cap_reconnect_t> > cap_exports;
-  map<client_t, entity_inst_t> client_map;
-  map<client_t,client_metadata_t> client_metadata_map;
-  bufferlist imported_caps;
-
-  // full
-  bufferlist inode_base;
-  bufferlist inode_locks;
-  map<dirfrag_t, bufferlist> dirfrag_bases;
-
   // authpins, xlocks
   struct slave_reqid {
     metareqid_t reqid;
@@ -207,23 +175,7 @@ private:
       decode(attempt, bl);
     }
   };
-  map<vinodeno_t, list<slave_reqid> > authpinned_inodes;
-  map<vinodeno_t, slave_reqid> frozen_authpin_inodes;
-  map<vinodeno_t, map<__s32, slave_reqid> > xlocked_inodes;
-  map<vinodeno_t, map<__s32, list<slave_reqid> > > wrlocked_inodes;
-  map<dirfrag_t, map<string_snap_t, list<slave_reqid> > > authpinned_dentries;
-  map<dirfrag_t, map<string_snap_t, slave_reqid> > xlocked_dentries;
-  
-protected:
-  MMDSCacheRejoin() :
-    MessageInstance(MSG_MDS_CACHEREJOIN, HEAD_VERSION, COMPAT_VERSION),
-    op(0) {}
-  MMDSCacheRejoin(int o) : 
-    MessageInstance(MSG_MDS_CACHEREJOIN, HEAD_VERSION, COMPAT_VERSION),
-    op(o) {}
-  ~MMDSCacheRejoin() override {}
 
-public:
   std::string_view get_type_name() const override { return "cache_rejoin"; }
   void print(ostream& out) const override {
     out << "cache_rejoin " << get_opname(op);
@@ -356,6 +308,48 @@ public:
       decode(client_metadata_map, p);
   }
 
+  // -- data --
+  int32_t op = 0;
+
+  // weak
+  map<inodeno_t, map<string_snap_t, dn_weak> > weak;
+  set<dirfrag_t> weak_dirfrags;
+  set<vinodeno_t> weak_inodes;
+  map<inodeno_t, lock_bls> inode_scatterlocks;
+
+  // strong
+  map<dirfrag_t, dirfrag_strong> strong_dirfrags;
+  map<dirfrag_t, map<string_snap_t, dn_strong> > strong_dentries;
+  map<vinodeno_t, inode_strong> strong_inodes;
+
+  // open
+  map<inodeno_t,map<client_t, cap_reconnect_t> > cap_exports;
+  map<client_t, entity_inst_t> client_map;
+  map<client_t,client_metadata_t> client_metadata_map;
+  bufferlist imported_caps;
+
+  // full
+  bufferlist inode_base;
+  bufferlist inode_locks;
+  map<dirfrag_t, bufferlist> dirfrag_bases;
+
+  map<vinodeno_t, list<slave_reqid> > authpinned_inodes;
+  map<vinodeno_t, slave_reqid> frozen_authpin_inodes;
+  map<vinodeno_t, map<__s32, slave_reqid> > xlocked_inodes;
+  map<vinodeno_t, map<__s32, list<slave_reqid> > > wrlocked_inodes;
+  map<dirfrag_t, map<string_snap_t, list<slave_reqid> > > authpinned_dentries;
+  map<dirfrag_t, map<string_snap_t, slave_reqid> > xlocked_dentries;
+
+private:
+  template<class T, typename... Args>
+  friend boost::intrusive_ptr<T> ceph::make_message(Args&&... args);
+
+  static constexpr int HEAD_VERSION = 2;
+  static constexpr int COMPAT_VERSION = 1;
+
+  MMDSCacheRejoin(int o) : MMDSCacheRejoin() { op = o; }
+  MMDSCacheRejoin() : SafeMessage{MSG_MDS_CACHEREJOIN, HEAD_VERSION, COMPAT_VERSION} {}
+  ~MMDSCacheRejoin() override {}
 };
 
 WRITE_CLASS_ENCODER(MMDSCacheRejoin::inode_strong)