]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix dn lease issue in base/root dir
authorSage Weil <sage@newdream.net>
Sat, 21 Jun 2008 17:48:30 +0000 (10:48 -0700)
committerSage Weil <sage@newdream.net>
Sat, 21 Jun 2008 17:48:30 +0000 (10:48 -0700)
src/mds/Locker.cc

index e74b73d8d1d77b7bb720d5b476e73adb8fe290f0..bc3ab37265b0ae9a3607146310ec0a70a7b03ddc 100644 (file)
@@ -1198,9 +1198,9 @@ 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->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 &&
+  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;