From: Sage Weil Date: Fri, 1 Oct 2010 19:48:59 +0000 (-0700) Subject: mds: fix and use add_replica_stray() helper for handle_dentry_unlink X-Git-Tag: v0.22~78 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e87f751b3dc703f13e7580a24df49fbff1359536;p=ceph.git mds: fix and use add_replica_stray() helper for handle_dentry_unlink Eliminate duplicate code by using (and fixing) the helper. Signed-off-by: Sage Weil --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 0abe20e39c74..d701fea8e4b1 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -8158,14 +8158,15 @@ CDentry *MDCache::add_replica_stray(bufferlist &bl, int from) list 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 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?