]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: avoid passing snapbl around explicitly
authorSage Weil <sage@newdream.net>
Wed, 17 Aug 2011 22:36:06 +0000 (15:36 -0700)
committerSage Weil <sage@newdream.net>
Wed, 17 Aug 2011 22:41:06 +0000 (15:41 -0700)
We now properly track projected snaprealm/sr_t's.  Use that for journaling
instead of manually passing around a snapbl.

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

index 8b33035565a667e48341f2c12a1451503a2228f9..aa306adfcb868d27b2aa813f3d045ea0fb91f3fe 100644 (file)
@@ -367,7 +367,7 @@ sr_t *CInode::project_snaprealm(snapid_t snapid)
 
 /* if newparent != parent, add parent to past_parents
  if parent DNE, we need to find what the parent actually is and fill that in */
-void CInode::project_past_snaprealm_parent(SnapRealm *newparent, bufferlist& snapbl)
+void CInode::project_past_snaprealm_parent(SnapRealm *newparent)
 {
   sr_t *new_snap = project_snaprealm();
   SnapRealm *oldparent;
@@ -384,7 +384,6 @@ void CInode::project_past_snaprealm_parent(SnapRealm *newparent, bufferlist& sna
     new_snap->past_parents[oldparentseq].first = new_snap->current_parent_since;
     new_snap->current_parent_since = MAX(oldparentseq, newparent->get_last_created()) + 1;
   }
-  new_snap->encode(snapbl);
 }
 
 void CInode::pop_projected_snaprealm(sr_t *next_snaprealm)
index ba0c1b101b1d02fd6309bf41729bffd70f77b761..b28fe58065fc693728a3a051ca5855a57976b242 100644 (file)
@@ -350,7 +350,7 @@ public:
     }
     return &snaprealm->srnode;
   }
-  void project_past_snaprealm_parent(SnapRealm *newparent, bufferlist& snapbl);
+  void project_past_snaprealm_parent(SnapRealm *newparent);
 
 private:
   void pop_projected_snaprealm(sr_t *next_snaprealm);
index 2a8ef6c68d823e8703d7b587b07c52c8cecdf601..7f0fa4785f872d344ea0af03694e00f66f78ebd4 100644 (file)
@@ -4547,10 +4547,9 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn)
     mdcache->predirty_journal_parents(mdr, &le->metablob, in, straydn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
 
     // project snaprealm, too
-    bufferlist snapbl;
-    in->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
+    in->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm());
 
-    le->metablob.add_primary_dentry(straydn, true, in, 0, &snapbl);
+    le->metablob.add_primary_dentry(straydn, true, in, 0);
   } else {
     // remote link.  update remote inode.
     mdcache->predirty_journal_parents(mdr, &le->metablob, in, dn->get_dir(), PREDIRTY_DIR, -1);
@@ -5625,10 +5624,9 @@ void Server::_rename_prepare(MDRequest *mdr,
     if (destdnl->is_primary()) {
       if (destdn->is_auth()) {
        // project snaprealm, too
-       bufferlist snapbl;
-       oldin->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
+       oldin->project_past_snaprealm_parent(straydn->get_dir()->inode->find_snaprealm());
        straydn->first = MAX(oldin->first, next_dest_snap);
-       tji = metablob->add_primary_dentry(straydn, true, oldin, 0, &snapbl);
+       tji = metablob->add_primary_dentry(straydn, true, oldin, 0);
       }
     } else if (destdnl->is_remote()) {
       if (oldin->is_auth()) {
@@ -5670,9 +5668,8 @@ void Server::_rename_prepare(MDRequest *mdr,
     }
   } else if (srcdnl->is_primary()) {
     // project snap parent update?
-    bufferlist snapbl;
     if (destdn->is_auth() && srci->snaprealm)
-      srci->project_past_snaprealm_parent(dest_realm, snapbl);
+      srci->project_past_snaprealm_parent(dest_realm);
     
     if (destdn->is_auth() && !destdnl->is_null())
       mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
@@ -5680,11 +5677,11 @@ void Server::_rename_prepare(MDRequest *mdr,
       destdn->first = MAX(destdn->first, next_dest_snap);
 
     if (destdn->is_auth())
-      ji = metablob->add_primary_dentry(destdn, true, srci, 0, &snapbl);
+      ji = metablob->add_primary_dentry(destdn, true, srci, 0);
     else if (force_journal) {
       dout(10) << " forced journaling destdn " << *destdn << dendl;
       metablob->add_dir_context(destdn->get_dir());
-      ji = metablob->add_primary_dentry(destdn, true, srci, 0, &snapbl);
+      ji = metablob->add_primary_dentry(destdn, true, srci, 0);
     }
   }