From: Sage Weil Date: Fri, 11 Jul 2008 22:13:19 +0000 (-0700) Subject: mds: fix purging for unlinked inodes with caps X-Git-Tag: v0.3~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=90a0dfcaa1287f4fa5b597c79a025c08dda3cb73;p=ceph.git mds: fix purging for unlinked inodes with caps --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index 709bddd79e0e..d1d17c341414 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -497,13 +497,6 @@ void Locker::file_update_finish(CInode *in, Mutation *mut, bool share) if (share && in->is_auth() && in->filelock.is_stable()) share_inode_max_size(in); - - // stray? may need to purge (e.g., after all caps are released) - if (in->inode.nlink == 0 && !in->is_any_caps() && - in->is_auth() && - in->get_parent_dn() && - in->get_parent_dn()->get_dir()->get_inode()->is_stray()) - mdcache->eval_stray(in->get_parent_dn()); } Capability* Locker::issue_new_caps(CInode *in, @@ -1094,6 +1087,14 @@ void Locker::handle_client_file_caps(MClientFileCaps *m) else if (in->is_auth()) file_eval(&in->filelock); + // unlinked stray? may need to purge (e.g., after all caps are released) + if (in->inode.nlink == 0 && + !in->is_any_caps() && + in->is_auth() && + in->get_parent_dn() && + in->get_parent_dn()->get_dir()->get_inode()->is_stray()) + mdcache->eval_stray(in->get_parent_dn()); + delete m; }