]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix broken EMetablob inode_t* return value
authorSage Weil <sage@inktank.com>
Fri, 24 Aug 2012 23:38:20 +0000 (16:38 -0700)
committerSage Weil <sage@inktank.com>
Fri, 31 Aug 2012 20:11:34 +0000 (13:11 -0700)
We pass this back to the caller, but it points to a member that is never
looked at, because the inode has already been encoded.  In effect this
wasn't journaling anything useful, and the only user questioned whether it
was needed, so let's rip it out.

Signed-off-by: Sage Weil <sage@inktank.com>
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/Server.cc
src/mds/events/EMetaBlob.h

index deedc40f6c26b234637abf8453a99b155e40df33..9ac7a62facbf913f78113611d6ab152388cf1c31 100644 (file)
@@ -1560,17 +1560,17 @@ void MDCache::journal_cow_inode(Mutation *mut, EMetaBlob *metablob, CInode *in,
   journal_cow_dentry(mut, metablob, dn, follows, pcow_inode);
 }
 
-inode_t *MDCache::journal_dirty_inode(Mutation *mut, EMetaBlob *metablob, CInode *in, snapid_t follows)
+void MDCache::journal_dirty_inode(Mutation *mut, EMetaBlob *metablob, CInode *in, snapid_t follows)
 {
   if (in->is_base()) {
-    return metablob->add_root(true, in, in->get_projected_inode());
+    metablob->add_root(true, in, in->get_projected_inode());
   } else {
     if (follows == CEPH_NOSNAP && in->last != CEPH_NOSNAP)
       follows = in->first - 1;
     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);
+    metablob->add_primary_dentry(dn, true, in);
   }
 }
 
index 236f644458f693a62e5c8932ac635d5b927ad8ce..9c7b096fe52104a3261ce42155a914aaccfa39ca 100644 (file)
@@ -267,7 +267,7 @@ public:
                          CInode **pcow_inode=0, CDentry::linkage_t *dnl=0);
   void journal_cow_inode(Mutation *mut, EMetaBlob *metablob, CInode *in, snapid_t follows=CEPH_NOSNAP,
                          CInode **pcow_inode=0);
-  inode_t *journal_dirty_inode(Mutation *mut, EMetaBlob *metablob, CInode *in, snapid_t follows=CEPH_NOSNAP);
+  void journal_dirty_inode(Mutation *mut, EMetaBlob *metablob, CInode *in, snapid_t follows=CEPH_NOSNAP);
 
   void project_rstat_inode_to_frag(CInode *cur, CDir *parent, snapid_t first, int linkunlink);
   void _project_rstat_inode_to_frag(inode_t& inode, snapid_t ofirst, snapid_t last,
index f92b9411ddb6876d691467ac857027eaf75814c2..dcdc75add0da74c863a8033efab7574b3562e4fd 100644 (file)
@@ -5528,8 +5528,8 @@ void Server::_rename_prepare(MDRequest *mdr,
   }
 
   // prepare
-  inode_t *pi = 0, *ji = 0;    // renamed inode
-  inode_t *tpi = 0, *tji = 0;  // target/overwritten inode
+  inode_t *pi = 0;    // renamed inode
+  inode_t *tpi = 0;  // target/overwritten inode
   
   // target inode
   if (!linkmerge) {
@@ -5648,14 +5648,14 @@ void Server::_rename_prepare(MDRequest *mdr,
        // project snaprealm, too
        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);
+       metablob->add_primary_dentry(straydn, true, oldin);
       }
     } else if (destdnl->is_remote()) {
       if (oldin->is_auth()) {
        // auth for targeti
        metablob->add_dir_context(oldin->get_parent_dir());
        mdcache->journal_cow_dentry(mdr, metablob, oldin->parent, CEPH_NOSNAP, 0, destdnl);
-       tji = metablob->add_primary_dentry(oldin->parent, true, oldin);
+       metablob->add_primary_dentry(oldin->parent, true, oldin);
       }
       if (destdn->is_auth()) {
        // auth for dn, not targeti
@@ -5677,7 +5677,7 @@ void Server::_rename_prepare(MDRequest *mdr,
       if (srci->get_parent_dn()->is_auth()) { // it's remote
        metablob->add_dir_context(srci->get_parent_dir());
         mdcache->journal_cow_dentry(mdr, metablob, srci->get_parent_dn(), CEPH_NOSNAP, 0, srcdnl);
-       ji = metablob->add_primary_dentry(srci->get_parent_dn(), true, srci);
+       metablob->add_primary_dentry(srci->get_parent_dn(), true, srci);
       }
     } else {
       if (destdn->is_auth() && !destdnl->is_null())
@@ -5699,11 +5699,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);
+      metablob->add_primary_dentry(destdn, true, srci);
     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);
+      metablob->add_primary_dentry(destdn, true, srci);
     }
   }
     
@@ -5723,19 +5723,6 @@ void Server::_rename_prepare(MDRequest *mdr,
   if (srcdnl->is_primary() && destdn->is_auth())
     srci->first = destdn->first;  
 
-  // do inode updates in journal, even if we aren't auth (hmm, is this necessary?)
-  if (!silent) {
-    if (ji && !pi) {
-      ji->ctime = mdr->now;
-      if (linkmerge)
-       ji->nlink--;
-    }
-    if (tji && !tpi) {
-      tji->nlink--;
-      tji->ctime = mdr->now;
-    }
-  }
-
   // anchor updates?
   if (mdr->more()->src_reanchor_atid)
     metablob->add_table_transaction(TABLE_ANCHOR, mdr->more()->src_reanchor_atid);
index c8e1db21d42d4c6bbf6300d50112f7e8ed5f8af6..9c281e9a04816190b8e577d6920fd6c524c48c1e 100644 (file)
@@ -546,11 +546,11 @@ private:
   }
 
   // return remote pointer to to-be-journaled inode
-  inode_t *add_primary_dentry(CDentry *dn, bool dirty, CInode *in=0) {
-    return add_primary_dentry(add_dir(dn->get_dir(), false),
-                              dn, dirty, in);
+  void add_primary_dentry(CDentry *dn, bool dirty, CInode *in=0) {
+    add_primary_dentry(add_dir(dn->get_dir(), false),
+                      dn, dirty, in);
   }
-  inode_t *add_primary_dentry(dirlump& lump, CDentry *dn, bool dirty, CInode *in=0) {
+  void add_primary_dentry(dirlump& lump, CDentry *dn, bool dirty, CInode *in=0) {
     if (!in) 
       in = dn->get_projected_linkage()->get_inode();
 
@@ -579,30 +579,27 @@ private:
                                                                         in->symlink, snapbl,
                                                                         dirty, default_layout,
                                                                         &in->old_inodes)));
-    if (pi)
-      lump.get_dfull().back()->inode = *pi;
-    return &lump.get_dfull().back()->inode;
   }
 
   // convenience: primary or remote?  figure it out.
-  inode_t *add_dentry(CDentry *dn, bool dirty) {
+  void add_dentry(CDentry *dn, bool dirty) {
     dirlump& lump = add_dir(dn->get_dir(), false);
-    return add_dentry(lump, dn, dirty);
+    add_dentry(lump, dn, dirty);
   }
-  inode_t *add_dentry(dirlump& lump, CDentry *dn, bool dirty) {
+  void add_dentry(dirlump& lump, CDentry *dn, bool dirty) {
     // primary or remote
     if (dn->get_projected_linkage()->is_remote()) {
       add_remote_dentry(dn, dirty);
-      return 0;
+      return;
     } else if (dn->get_projected_linkage()->is_null()) {
       add_null_dentry(dn, dirty);
-      return 0;
+      return;
     }
     assert(dn->get_projected_linkage()->is_primary());
-    return add_primary_dentry(dn, dirty);
+    add_primary_dentry(dn, dirty);
   }
 
-  inode_t *add_root(bool dirty, CInode *in, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
+  void add_root(bool dirty, CInode *in, inode_t *pi=0, fragtree_t *pdft=0, bufferlist *psnapbl=0,
                    map<string,bufferptr> *px=0) {
     in->last_journaled = my_offset;
     //cout << "journaling " << in->inode.ino << " at " << my_offset << std::endl;
@@ -631,7 +628,6 @@ private:
                       *pi, *pdft, *px,
                       in->symlink, snapbl,
                       dirty, default_layout, &in->old_inodes);
-    return &root->inode;
   }
   
   dirlump& add_dir(CDir *dir, bool dirty, bool complete=false, bool isnew=false) {