]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: issue per-dentry leases on base inodes, despite ICONTENT
authorSage Weil <sage@newdream.net>
Fri, 20 Jun 2008 00:07:39 +0000 (17:07 -0700)
committerSage Weil <sage@newdream.net>
Fri, 20 Jun 2008 05:55:36 +0000 (22:55 -0700)
src/mds/Locker.cc

index 597316008a0a52d304da29864e0cbb6ee296aa30..e74b73d8d1d77b7bb720d5b476e73adb8fe290f0 100644 (file)
@@ -1198,7 +1198,8 @@ int Locker::issue_client_lease(CDentry *dn, int client,
   //    if the client is holding EXCL|RDCACHE caps.
   int mask = 0;
   CInode *diri = dn->get_dir()->get_inode();
-  if (!diri->dirlock.can_lease() &&
+  if (!diri->is_base() &&   // base inode's don't get version updated, so ICONTENT is useless.
+      !diri->dirlock.can_lease() &&
       (diri->get_client_cap_pending(client) & (CEPH_CAP_EXCL|CEPH_CAP_RDCACHE)) == 0 &&
       dn->lock.can_lease())
     mask |= CEPH_LOCK_DN;