]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: simplify sr_t journaling
authorSage Weil <sage@newdream.net>
Wed, 17 Aug 2011 22:33:11 +0000 (15:33 -0700)
committerSage Weil <sage@newdream.net>
Wed, 17 Aug 2011 22:33:11 +0000 (15:33 -0700)
Drop encode/decode in SnapRealm and encode the sr_t's directly.  This way
the caller says what they mean (current or projected).

Signed-off-by: Sage Weil <sage@newdream.net>
src/mds/CInode.cc
src/mds/MDCache.cc
src/mds/events/EMetaBlob.h
src/mds/snap.h

index 4efed70e2db432f97b7c460b52564dfe43a83941..8b33035565a667e48341f2c12a1451503a2228f9 100644 (file)
@@ -2136,7 +2136,7 @@ SnapRealm *CInode::find_snaprealm()
 void CInode::encode_snap_blob(bufferlist &snapbl)
 {
   if (snaprealm) {
-    ::encode(*snaprealm, snapbl);
+    ::encode(snaprealm->srnode, snapbl);
     dout(20) << "encode_snap_blob " << *snaprealm << dendl;
   }
 }
@@ -2145,7 +2145,7 @@ void CInode::decode_snap_blob(bufferlist& snapbl)
   if (snapbl.length()) {
     open_snaprealm();
     bufferlist::iterator p = snapbl.begin();
-    ::decode(*snaprealm, p);
+    ::decode(snaprealm->srnode, p);
     dout(20) << "decode_snap_blob " << *snaprealm << dendl;
   }
 }
index 2211494059460658ef2e93959d50a3dde82289ed..0265d0c32b71491c3ba1028d402980af72be0f23 100644 (file)
@@ -1521,10 +1521,7 @@ void MDCache::journal_cow_dentry(Mutation *mut, EMetaBlob *metablob, CDentry *dn
       CDentry *olddn = dn->dir->add_primary_dentry(dn->name, oldin, oldfirst, follows);
       oldin->inode.version = olddn->pre_dirty();
       dout(10) << " olddn " << *olddn << dendl;
-      bufferlist snapbl;
-      if (dnl->get_inode()->projected_nodes.back()->snapnode)
-        dnl->get_inode()->projected_nodes.back()->snapnode->encode(snapbl);
-      metablob->add_primary_dentry(olddn, true, 0, 0, (snapbl.length() ? &snapbl : NULL));
+      metablob->add_primary_dentry(olddn, true, 0, 0);
       mut->add_cow_dentry(olddn);
     } else {
       assert(dnl->is_remote());
index c8f98acb9059fe7ce714fa83b7e138a9e802b210..13a85054649fc43cc2efceed73008fdedfd73315 100644 (file)
@@ -560,10 +560,14 @@ private:
       px = &in->xattrs;
 
     bufferlist snapbl;
-    if (psnapbl)
+    if (psnapbl) {
       snapbl = *psnapbl;
-    else
-      in->encode_snap_blob(snapbl);
+    } else {
+      sr_t *sr = in->get_projected_srnode();
+      if (sr)
+       sr->encode(snapbl);
+    }
+       
 
     lump.nfull++;
     lump.get_dfull().push_back(std::tr1::shared_ptr<fullbit>(new fullbit(dn->get_name(), 
index b1c0a7de68ff60e4a63abc2815721dd67aa96a40..fa7c7ba4614a1def0b25e929ed859da0290fd93a 100644 (file)
@@ -111,7 +111,7 @@ struct sr_t {
 
 
   void encode(bufferlist& bl) const {
-    __u8 struct_v = 1;
+    __u8 struct_v = 3;
     ::encode(struct_v, bl);
     ::encode(seq, bl);
     ::encode(created, bl);
@@ -124,6 +124,8 @@ struct sr_t {
   void decode(bufferlist::iterator& p) {
     __u8 struct_v;
     ::decode(struct_v, p);
+    if (struct_v == 2)
+      ::decode(struct_v, p);
     ::decode(seq, p);
     ::decode(created, p);
     ::decode(last_created, p);
@@ -139,26 +141,6 @@ struct SnapRealm {
   // realm state
 
   sr_t srnode;
-  void encode(bufferlist& bl) const {
-    __u8 struct_v = 2;
-    ::encode(struct_v, bl);
-    ::encode(srnode, bl);
-  }
-  void decode(bufferlist::iterator& p) {
-    __u8 struct_v;
-    ::decode(struct_v, p);
-    if (struct_v >= 2)
-      ::decode(srnode, p);
-    else {
-      ::decode(srnode.seq, p);
-      ::decode(srnode.created, p);
-      ::decode(srnode.last_created, p);
-      ::decode(srnode.last_destroyed, p);
-      ::decode(srnode.current_parent_since, p);
-      ::decode(srnode.snaps, p);
-      ::decode(srnode.past_parents, p);
-    }
-  }
 
   // in-memory state
   MDCache *mdcache;
@@ -276,7 +258,6 @@ struct SnapRealm {
   }
 
 };
-WRITE_CLASS_ENCODER(SnapRealm)
 
 ostream& operator<<(ostream& out, const SnapRealm &realm);