]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix and use add_replica_stray() helper for handle_dentry_unlink
authorSage Weil <sage@newdream.net>
Fri, 1 Oct 2010 19:48:59 +0000 (12:48 -0700)
committerSage Weil <sage@newdream.net>
Fri, 1 Oct 2010 19:52:43 +0000 (12:52 -0700)
Eliminate duplicate code by using (and fixing) the helper.

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

index 0abe20e39c7417d2b97be46097c6e8d14aafd6e2..d701fea8e4b1f60f6350dc56bfdc5ded145b5391 100644 (file)
@@ -8158,14 +8158,15 @@ CDentry *MDCache::add_replica_stray(bufferlist &bl, int from)
   list<Context*> finished;
   bufferlist::iterator p = bl.begin();
 
-  CInode *strayin = add_replica_inode(p, NULL, finished);
-  dout(15) << "strayin " << *strayin << dendl;
+  CInode *mdsin = add_replica_inode(p, NULL, finished);
+  CDir *mdsdir = add_replica_dir(p, mdsin, from, finished);
+  CDentry *straydirdn = add_replica_dentry(p, mdsdir, finished);
+  CInode *strayin = add_replica_inode(p, straydirdn, finished);
   CDir *straydir = add_replica_dir(p, strayin, from, finished);
-  dout(15) << "straydir " << *straydir << dendl;
   CDentry *straydn = add_replica_dentry(p, straydir, finished);
-  dout(15) << "straydn " << *straydn << dendl;
+  if (!finished.empty())
+    mds->queue_waiters(finished);
 
-  mds->queue_waiters(finished);
   return straydn;
 }
 
@@ -8348,19 +8349,10 @@ void MDCache::handle_dentry_unlink(MDentryUnlink *m)
       CDentry::linkage_t *dnl = dn->get_linkage();
 
       // straydn
-      bufferlist::iterator p = m->straybl.begin();
       CDentry *straydn = NULL;
-      if (!p.end()) {
-       list<Context*> finished;
+      if (m->straybl.length()) {
        int from = m->get_source().num();
-       CInode *mdsin = add_replica_inode(p, NULL, finished);
-       CDir *mdsdir = add_replica_dir(p, mdsin, from, finished);
-       CDentry *straydirdn = add_replica_dentry(p, mdsdir, finished);
-       CInode *strayin = add_replica_inode(p, straydirdn, finished);
-       CDir *straydir = add_replica_dir(p, strayin, from, finished);
-       straydn = add_replica_dentry(p, straydir, finished);
-       if (!finished.empty())
-         mds->queue_waiters(finished);
+       straydn = add_replica_stray(m->straybl, from);
       }
 
       // open inode?