]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix hang on FileLock transition to LOCK
authorSage Weil <sage@newdream.net>
Thu, 1 May 2008 01:56:17 +0000 (18:56 -0700)
committerSage Weil <sage@newdream.net>
Thu, 1 May 2008 01:56:17 +0000 (18:56 -0700)
src/mds/Locker.cc

index d75634dd0147a62f0571f5b2d63280f27c6a36b1..f0aa2833771e39b5029e259ea7af00dcd1436489 100644 (file)
@@ -3000,7 +3000,7 @@ bool Locker::file_sync(FileLock *lock)
 void Locker::file_lock(FileLock *lock)
 {
   CInode *in = (CInode*)lock->get_parent();
-  dout(7) << "inode_file_lock " << *lock << " on " << *lock->get_parent() << dendl;  
+  dout(7) << "file_lock " << *lock << " on " << *lock->get_parent() << dendl;  
 
   assert(in->is_auth());
   assert(lock->is_stable());
@@ -3020,12 +3020,12 @@ void Locker::file_lock(FileLock *lock)
       lock->get_parent()->auth_pin();
 
       // call back caps
-      if (issued) 
+      if (issued & ~lock->caps_allowed()
         issue_caps(in);
     } else {
-      if (issued) {
+      lock->set_state(LOCK_GLOCKR);
+      if (issued & ~lock->caps_allowed()) {
         // call back caps
-        lock->set_state(LOCK_GLOCKR);
        lock->get_parent()->auth_pin();
         issue_caps(in);
       } else {