From ddb633bf50e0cf9872f08c1a88e5dcd053b2b9dd Mon Sep 17 00:00:00 2001 From: sageweil Date: Mon, 8 Oct 2007 17:30:16 +0000 Subject: [PATCH] discover_path fix; try to merge subtree when cleaning up after a rename git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1888 29311d96-e01e-0410-9327-a35deaab8ce9 --- branches/sage/mds/mds/MDCache.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/branches/sage/mds/mds/MDCache.cc b/branches/sage/mds/mds/MDCache.cc index df5cd916df0a7..7831afcfe82d2 100644 --- a/branches/sage/mds/mds/MDCache.cc +++ b/branches/sage/mds/mds/MDCache.cc @@ -895,8 +895,10 @@ void MDCache::adjust_subtree_after_rename(CInode *diri, CDir *olddir) CDir *dir = *p; // un-force dir to subtree root - if (dir->dir_auth == pair(dir->dir_auth.first, dir->dir_auth.first)) + if (dir->dir_auth == pair(dir->dir_auth.first, dir->dir_auth.first)) { adjust_subtree_auth(dir, dir->dir_auth.first); + try_subtree_merge_at(dir); + } } show_subtrees(); @@ -4821,7 +4823,7 @@ void MDCache::discover_path(CDir *base, return; } - if (!base->is_waiting_for_dentry(want_path[0])) { + if (!base->is_waiting_for_dentry(want_path[0]) || !onfinish) { MDiscover *dis = new MDiscover(mds->get_nodeid(), base->ino(), want_path, @@ -4831,7 +4833,7 @@ void MDCache::discover_path(CDir *base, } // register + wait - base->add_dentry_waiter(want_path[0], onfinish); + if (onfinish) base->add_dentry_waiter(want_path[0], onfinish); discover_dir_sub[from][base->dirfrag()]++; } -- 2.39.5