]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: invalidate dentry leases when unlinking
authorSage Weil <sage@inktank.com>
Fri, 24 May 2013 00:12:27 +0000 (17:12 -0700)
committerYan, Zheng <zheng.z.yan@intel.com>
Sat, 10 May 2014 03:50:09 +0000 (11:50 +0800)
In many case when we are unlinking inodes we also need to invalidate the
dentry lease, as we are not promised that the dentry is NULL.  Be a bit
over-conservative here for good measure.

Signed-off-by: Sage Weil <sage@inktank.com>
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/client/Client.cc

index 37c372573e2e0c57afad382a95e179aa8c477542..eb09f1b949727ca4901f7118f15ad3957bf25514 100644 (file)
@@ -2304,7 +2304,9 @@ void Client::unlink(Dentry *dn, bool keepdir, bool keepdentry)
     put_inode(in);
   }
 
-  if (!keepdentry) {
+  if (keepdentry) {
+    dn->lease_mds = -1;
+  } else {
     ldout(cct, 15) << "unlink  removing '" << dn->name << "' dn " << dn << dendl;
 
     // unlink from dir