]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: simplify EMetaBlob interface - don't pass explicit inode_t pointer
authorSage Weil <sage@newdream.net>
Sun, 5 Apr 2009 03:51:21 +0000 (20:51 -0700)
committerSage Weil <sage@newdream.net>
Sun, 5 Apr 2009 03:51:21 +0000 (20:51 -0700)
It is always in->get_projected_inode().

src/mds/Locker.cc
src/mds/MDCache.cc
src/mds/Server.cc
src/mds/events/EMetaBlob.h
src/mds/events/EOpen.h

index 2b5022f4824ead63b5f95e6f61f849a34d721c12..1e0a19c93714f73e7171dcace77103fa239b796d 100644 (file)
@@ -1359,7 +1359,7 @@ bool Locker::check_inode_max_size(CInode *in, bool force_wrlock, bool update_siz
     mdcache->predirty_journal_parents(mut, metablob, in, 0, PREDIRTY_PRIMARY);
     // no cow, here!
     CDentry *parent = in->get_projected_parent_dn();
-    metablob->add_primary_dentry(parent, true, in, in->get_projected_inode());
+    metablob->add_primary_dentry(parent, true, in);
   } else {
     metablob->add_dir_context(in->get_projected_parent_dn()->get_dir());
     mdcache->journal_dirty_inode(mut, metablob, in);
index 2fd02ea6f73b59ce2964a13ff116c41e41525d75..7eed98fbe932b20cf71ed2674c202f2caeb058c6 100644 (file)
@@ -357,7 +357,7 @@ void MDCache::_create_system_file(CDir *dir, const char *name, CInode *in, Conte
   EUpdate *le = new EUpdate(mds->mdlog, "create system file");
   
   predirty_journal_parents(mut, &le->metablob, in, dir, PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
-  le->metablob.add_primary_dentry(dn, true, in, &in->inode);
+  le->metablob.add_primary_dentry(dn, true, in);
   if (mdir)
     le->metablob.add_dir(mdir, true, true, true); // dirty AND complete AND new
 
@@ -1396,7 +1396,7 @@ inode_t *MDCache::journal_dirty_inode(Mutation *mut, EMetaBlob *metablob, CInode
     CDentry *dn = in->get_projected_parent_dn();
     if (!dn->get_projected_linkage()->is_null())  // no need to cow a null dentry
       journal_cow_dentry(mut, metablob, dn, follows);
-    return metablob->add_primary_dentry(dn, true, in, in->get_projected_inode());
+    return metablob->add_primary_dentry(dn, true, in);
   }
 }
 
@@ -4247,7 +4247,7 @@ void MDCache::queue_file_recover(CInode *in)
     }
     
     in->parent->first = in->first;
-    le->metablob.add_primary_dentry(in->parent, true, in, in->get_projected_inode());
+    le->metablob.add_primary_dentry(in->parent, true, in);
     mds->mdlog->submit_entry(le, new C_MDC_QueuedCow(this, in, mut));
     mds->mdlog->flush();
   }
@@ -4458,7 +4458,7 @@ void MDCache::truncate_inode_finish(CInode *in, LogSegment *ls)
 
   EUpdate *le = new EUpdate(mds->mdlog, "truncate finish");
   le->metablob.add_dir_context(in->get_parent_dir());
-  le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in, pi);
+  le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in);
   le->metablob.add_truncate_finish(in->ino(), ls->offset);
 
   journal_dirty_inode(mut, &le->metablob, in);
@@ -6550,7 +6550,7 @@ void MDCache::snaprealm_create(MDRequest *mdr, CInode *in)
   
   predirty_journal_parents(mut, &le->metablob, in, 0, PREDIRTY_PRIMARY);
   journal_cow_inode(mut, &le->metablob, in);
-  le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+  le->metablob.add_primary_dentry(in->get_projected_parent_dn(), true, in, 0, &snapbl);
 
   mds->mdlog->submit_entry(le, new C_MDC_snaprealm_create_finish(this, mdr, mut, in));
   mds->mdlog->flush();
index 182b48a60b6ccdf84f9e62d87fd5124a990c1973..df52f974318857738216abe6ee32469a68b04000 100644 (file)
@@ -2064,7 +2064,7 @@ void Server::handle_client_setxattr(MDRequest *mdr)
   le->metablob.add_client_req(req->get_reqid());
   mdcache->predirty_journal_parents(mdr, &le->metablob, cur, 0, PREDIRTY_PRIMARY, false);
   mdcache->journal_cow_inode(mdr, &le->metablob, cur);
-  le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, pi, 0, 0, px);
+  le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, 0, 0, px);
 
   journal_and_reply(mdr, cur, 0, le, new C_MDS_inode_update_finish(mds, mdr, cur));
 }
@@ -2113,7 +2113,7 @@ void Server::handle_client_removexattr(MDRequest *mdr)
   le->metablob.add_client_req(req->get_reqid());
   mdcache->predirty_journal_parents(mdr, &le->metablob, cur, 0, PREDIRTY_PRIMARY, false);
   mdcache->journal_cow_inode(mdr, &le->metablob, cur);
-  le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, pi, 0, 0, px);
+  le->metablob.add_primary_dentry(cur->get_projected_parent_dn(), true, cur, 0, 0, px);
 
   journal_and_reply(mdr, cur, 0, le, new C_MDS_inode_update_finish(mds, mdr, cur));
 }
@@ -2416,7 +2416,7 @@ void Server::handle_client_mkdir(MDRequest *mdr)
   le->metablob.add_client_req(req->get_reqid());
   journal_allocated_inos(mdr, &le->metablob);
   mdcache->predirty_journal_parents(mdr, &le->metablob, newi, dn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
-  le->metablob.add_primary_dentry(dn, true, newi, &newi->inode);
+  le->metablob.add_primary_dentry(dn, true, newi);
   le->metablob.add_dir(newdir, true, true, true); // dirty AND complete AND new
   
   // issue a cap on the directory
@@ -3005,7 +3005,7 @@ void Server::do_link_rollback(bufferlist &rbl, int master, MDRequest *mdr)
                                      ESlaveUpdate::OP_ROLLBACK, ESlaveUpdate::LINK);
   le->commit.add_dir_context(parent);
   le->commit.add_dir(parent, true);
-  le->commit.add_primary_dentry(in->get_parent_dn(), true, 0, pi);
+  le->commit.add_primary_dentry(in->get_parent_dn(), true, 0);
   
   mdlog->submit_entry(le, new C_MDS_LoggedLinkRollback(this, mut, mdr));
   mdlog->flush();
@@ -3251,7 +3251,7 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn)
       dnl->get_inode()->snaprealm->project_past_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
 
     straydn->first = dnl->get_inode()->first;
-    le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), pi, 0, &snapbl);
+    le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), 0, &snapbl);
   } else {
     // remote link.  update remote inode.
     mdcache->predirty_journal_parents(mdr, &le->metablob, dnl->get_inode(), dn->get_dir(), PREDIRTY_DIR, -1);
@@ -4013,11 +4013,11 @@ void Server::_rename_prepare(MDRequest *mdr,
       } else
        destdnl->get_inode()->snaprealm->project_past_parent(straydn->get_dir()->inode->find_snaprealm(), snapbl);
       straydn->first = destdnl->get_inode()->first;
-      tji = metablob->add_primary_dentry(straydn, true, destdnl->get_inode(), tpi, 0, &snapbl);
+      tji = metablob->add_primary_dentry(straydn, true, destdnl->get_inode(), 0, &snapbl);
     } else if (destdnl->is_remote()) {
       metablob->add_dir_context(destdnl->get_inode()->get_parent_dir());
       mdcache->journal_cow_dentry(mdr, metablob, destdnl->get_inode()->parent, CEPH_NOSNAP, 0, destdnl);
-      tji = metablob->add_primary_dentry(destdnl->get_inode()->parent, true, destdnl->get_inode(), tpi);
+      tji = metablob->add_primary_dentry(destdnl->get_inode()->parent, true, destdnl->get_inode());
     }
   }
 
@@ -4030,13 +4030,13 @@ void Server::_rename_prepare(MDRequest *mdr,
        destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
       metablob->add_remote_dentry(destdn, true, srcdnl->get_remote_ino(), srcdnl->get_remote_d_type());
       mdcache->journal_cow_dentry(mdr, metablob, srcdnl->get_inode()->get_parent_dn(), CEPH_NOSNAP, 0, srcdnl);
-      ji = metablob->add_primary_dentry(srcdnl->get_inode()->get_parent_dn(), true, srcdnl->get_inode(), pi);
+      ji = metablob->add_primary_dentry(srcdnl->get_inode()->get_parent_dn(), true, srcdnl->get_inode());
     } else {
       if (!destdnl->is_null())
        mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
       else
        destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
-      metablob->add_primary_dentry(destdn, true, destdnl->get_inode(), pi); 
+      metablob->add_primary_dentry(destdn, true, destdnl->get_inode()); 
     }
   } else if (srcdnl->is_primary()) {
     // project snap parent update?
@@ -4048,7 +4048,7 @@ void Server::_rename_prepare(MDRequest *mdr,
       mdcache->journal_cow_dentry(mdr, metablob, destdn, CEPH_NOSNAP, 0, destdnl);
     else
       destdn->first = destdn->get_dir()->inode->find_snaprealm()->get_newest_seq()+1;
-    ji = metablob->add_primary_dentry(destdn, true, srcdnl->get_inode(), pi, 0, &snapbl); 
+    ji = metablob->add_primary_dentry(destdn, true, srcdnl->get_inode(), 0, &snapbl); 
   }
     
   // src
@@ -4696,12 +4696,12 @@ void Server::do_rename_rollback(bufferlist &rbl, int master, MDRequest *mdr)
   ESlaveUpdate *le = new ESlaveUpdate(mdlog, "slave_rename_rollback", rollback.reqid, master,
                                      ESlaveUpdate::OP_ROLLBACK, ESlaveUpdate::RENAME);
   le->commit.add_dir_context(srcdir);
-  le->commit.add_primary_dentry(srcdn, true, 0, pi);
+  le->commit.add_primary_dentry(srcdn, true, 0);
   le->commit.add_dir_context(destdir);
   if (destdnl->is_null())
     le->commit.add_null_dentry(destdn, true);
   else if (destdnl->is_primary())
-    le->commit.add_primary_dentry(destdn, true, 0, ti);
+    le->commit.add_primary_dentry(destdn, true, 0);
   else if (destdnl->is_remote())
     le->commit.add_remote_dentry(destdn, true);
   if (straydn) {
@@ -5271,7 +5271,7 @@ void Server::handle_client_mksnap(MDRequest *mdr)
   if (newrealm)
     diri->close_snaprealm(true);
   
-  le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+  le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
 
   mdlog->submit_entry(le, new C_MDS_mksnap_finish(mds, mdr, diri, info));
   mdlog->flush();
@@ -5408,7 +5408,7 @@ void Server::handle_client_rmsnap(MDRequest *mdr)
   diri->snaprealm->snaps[snapid] = old_info;
   diri->snaprealm->seq = old_seq;
   diri->snaprealm->last_destroyed = old_ld;
-  le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, pi, 0, &snapbl);
+  le->metablob.add_primary_dentry(diri->get_projected_parent_dn(), true, 0, 0, &snapbl);
 
   mdlog->submit_entry(le, new C_MDS_rmsnap_finish(mds, mdr, diri, snapid));
   mdlog->flush();
index 6c94c724d9d325a598c57685c8c96d3d3f40d0ae..16ca7fe449cb5072950736898427788e2e3da52e 100644 (file)
@@ -491,13 +491,13 @@ private:
 
   // return remote pointer to to-be-journaled inode
   inode_t *add_primary_dentry(CDentry *dn, bool dirty, 
-                             CInode *in=0, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+                             CInode *in=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
                              map<string,bufferptr> *px=0) {
     return add_primary_dentry(add_dir(dn->get_dir(), false),
-                             dn, dirty, in, pi, pdft, psnapbl, px);
+                             dn, dirty, in, pdft, psnapbl, px);
   }
   inode_t *add_primary_dentry(dirlump& lump, CDentry *dn, bool dirty, 
-                             CInode *in=0, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+                             CInode *in=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
                              map<string,bufferptr> *px=0) {
     if (!in) 
       in = dn->get_projected_linkage()->get_inode();
@@ -506,7 +506,7 @@ private:
     in->last_journaled = my_offset;
     //cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
 
-    if (!pi) pi = in->get_projected_inode();
+    inode_t *pi = in->get_projected_inode();
     if (!pdft) pdft = &in->dirfragtree;
     if (!px) px = &in->xattrs;
 
index 40c872cea84ad1b5f2c8d105455d97bebb730b0f..d72572fda8e1a220f2fd60fef6011609f6edc941 100644 (file)
@@ -33,9 +33,8 @@ public:
 
   void add_clean_inode(CInode *in) {
     if (!in->is_root()) {
-      inode_t *pi = in->get_projected_inode();
       metablob.add_dir_context(in->get_projected_parent_dn()->get_dir());
-      metablob.add_primary_dentry(in->get_projected_parent_dn(), false, 0, pi);
+      metablob.add_primary_dentry(in->get_projected_parent_dn(), false, 0);
       inos.push_back(in->ino());
     }
   }