]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: const methods on SnapRealm
authorJohn Spray <john.spray@redhat.com>
Mon, 19 Dec 2016 12:38:20 +0000 (12:38 +0000)
committerJohn Spray <john.spray@redhat.com>
Wed, 8 Mar 2017 10:20:56 +0000 (10:20 +0000)
Signed-off-by: John Spray <john.spray@redhat.com>
src/mds/SnapRealm.cc
src/mds/SnapRealm.h

index 0b22b14b694c90ab39c7666dec37e5eb20761622..df5cb12df7faea2f60d0e9bf4250dfcd4ae5b190 100644 (file)
@@ -27,8 +27,8 @@
 #define dout_subsys ceph_subsys_mds
 #undef dout_prefix
 #define dout_prefix _prefix(_dout, mdcache->mds->get_nodeid(), inode, srnode.seq, this)
-static ostream& _prefix(std::ostream *_dout, int whoami, CInode *inode,
-                       uint64_t seq, SnapRealm *realm) {
+static ostream& _prefix(std::ostream *_dout, int whoami, const CInode *inode,
+                       uint64_t seq, const SnapRealm *realm) {
   return *_dout << " mds." << whoami
                << ".cache.snaprealm(" << inode->ino()
                << " seq " << seq << " " << realm << ") ";
@@ -223,7 +223,7 @@ void SnapRealm::close_parents()
  */
 void SnapRealm::build_snap_set(set<snapid_t> &s,
                               snapid_t& max_seq, snapid_t& max_last_created, snapid_t& max_last_destroyed,
-                              snapid_t first, snapid_t last)
+                              snapid_t first, snapid_t last) const
 {
   dout(10) << "build_snap_set [" << first << "," << last << "] on " << *this << dendl;
 
@@ -235,16 +235,16 @@ void SnapRealm::build_snap_set(set<snapid_t> &s,
     max_last_destroyed = srnode.last_destroyed;
 
   // include my snaps within interval [first,last]
-  for (map<snapid_t, SnapInfo>::iterator p = srnode.snaps.lower_bound(first); // first element >= first
+  for (map<snapid_t, SnapInfo>::const_iterator p = srnode.snaps.lower_bound(first); // first element >= first
        p != srnode.snaps.end() && p->first <= last;
        ++p)
     s.insert(p->first);
 
   // include snaps for parents during intervals that intersect [first,last]
-  for (map<snapid_t, snaplink_t>::iterator p = srnode.past_parents.lower_bound(first);
+  for (map<snapid_t, snaplink_t>::const_iterator p = srnode.past_parents.lower_bound(first);
        p != srnode.past_parents.end() && p->first >= first && p->second.first <= last;
        ++p) {
-    CInode *oldparent = mdcache->get_inode(p->second.ino);
+    const CInode *oldparent = mdcache->get_inode(p->second.ino);
     assert(oldparent);  // call open_parents first!
     assert(oldparent->snaprealm);
     oldparent->snaprealm->build_snap_set(s, max_seq, max_last_created, max_last_destroyed,
@@ -257,7 +257,7 @@ void SnapRealm::build_snap_set(set<snapid_t> &s,
 }
 
 
-void SnapRealm::check_cache()
+void SnapRealm::check_cache() const
 {
   assert(open);
   if (cached_seq >= srnode.seq)
@@ -283,7 +283,7 @@ void SnapRealm::check_cache()
           << ")" << dendl;
 }
 
-const set<snapid_t>& SnapRealm::get_snaps()
+const set<snapid_t>& SnapRealm::get_snaps() const
 {
   check_cache();
   dout(10) << "get_snaps " << cached_snaps
@@ -295,7 +295,7 @@ const set<snapid_t>& SnapRealm::get_snaps()
 /*
  * build vector in reverse sorted order
  */
-const SnapContext& SnapRealm::get_snap_context()
+const SnapContext& SnapRealm::get_snap_context() const
 {
   check_cache();
 
@@ -505,7 +505,7 @@ const bufferlist& SnapRealm::get_snap_trace()
   return cached_snap_trace;
 }
 
-void SnapRealm::build_snap_trace(bufferlist& snapbl)
+void SnapRealm::build_snap_trace(bufferlist& snapbl) const
 {
   SnapRealmInfo info(inode->ino(), srnode.created, srnode.seq, srnode.current_parent_since);
 
@@ -526,7 +526,7 @@ void SnapRealm::build_snap_trace(bufferlist& snapbl)
     info.h.parent = 0;
 
   info.my_snaps.reserve(srnode.snaps.size());
-  for (map<snapid_t,SnapInfo>::reverse_iterator p = srnode.snaps.rbegin();
+  for (map<snapid_t,SnapInfo>::const_reverse_iterator p = srnode.snaps.rbegin();
        p != srnode.snaps.rend();
        ++p)
     info.my_snaps.push_back(p->first);
index 5d6f42194e508c6a931b9f625d3cbf96de6a33f3..4a99d639140a16d57e66e7d45ba94b5ebac958bf 100644 (file)
 class MDSInternalContextBase;
 
 struct SnapRealm {
-  // realm state
+protected:
+  // cache
+  mutable snapid_t cached_seq;           // max seq over self and all past+present parents.
+  mutable snapid_t cached_last_created;  // max last_created over all past+present parents
+  mutable snapid_t cached_last_destroyed;
+  mutable set<snapid_t> cached_snaps;
+  mutable SnapContext cached_snap_context;
+  mutable bufferlist cached_snap_trace;
+
+  void check_cache() const;
 
+public:
+  // realm state
   sr_t srnode;
 
   // in-memory state
@@ -39,14 +50,7 @@ struct SnapRealm {
   map<inodeno_t, pair<SnapRealm*, set<snapid_t> > > open_past_parents;  // these are explicitly pinned.
   unsigned num_open_past_parents;
 
-  // cache
-  snapid_t cached_seq;           // max seq over self and all past+present parents.
-  snapid_t cached_last_created;  // max last_created over all past+present parents
-  snapid_t cached_last_destroyed;
-  set<snapid_t> cached_snaps;
-  SnapContext cached_snap_context;
 
-  bufferlist cached_snap_trace;
 
   elist<CInode*> inodes_with_caps;             // for efficient realm splits
   map<client_t, xlist<Capability*>* > client_caps;   // to identify clients who need snap notifications
@@ -84,18 +88,17 @@ struct SnapRealm {
 
   void build_snap_set(set<snapid_t>& s, 
                      snapid_t& max_seq, snapid_t& max_last_created, snapid_t& max_last_destroyed,
-                     snapid_t first, snapid_t last);
+                     snapid_t first, snapid_t last) const;
   void get_snap_info(map<snapid_t,SnapInfo*>& infomap, snapid_t first=0, snapid_t last=CEPH_NOSNAP);
 
   const bufferlist& get_snap_trace();
-  void build_snap_trace(bufferlist& snapbl);
+  void build_snap_trace(bufferlist& snapbl) const;
 
   const string& get_snapname(snapid_t snapid, inodeno_t atino);
   snapid_t resolve_snapname(const string &name, inodeno_t atino, snapid_t first=0, snapid_t last=CEPH_NOSNAP);
 
-  void check_cache();
-  const set<snapid_t>& get_snaps();
-  const SnapContext& get_snap_context();
+  const set<snapid_t>& get_snaps() const;
+  const SnapContext& get_snap_context() const;
   void invalidate_cached_snaps() {
     cached_seq = 0;
   }