]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: handle MIX_STALE on auth too
authorSage Weil <sage@newdream.net>
Wed, 3 Nov 2010 17:12:35 +0000 (10:12 -0700)
committerSage Weil <sage@newdream.net>
Wed, 3 Nov 2010 17:12:35 +0000 (10:12 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/mds/Locker.cc

index 7ee23c86ba9afa12a532d68e2c01bdca3c3b5d3f..9103dd3f9890308fa8ab7c05849da089a8c09d66 100644 (file)
@@ -953,9 +953,12 @@ bool Locker::wrlock_start(SimpleLock *lock, MDRequest *mut, bool nowait)
       break;
 
     if (in->is_auth()) {
-      if (want_scatter)
-       scatter_mix((ScatterLock*)lock);
-      else {
+      if (want_scatter) {
+       if (lock->get_state() == LOCK_MIX_STALE)
+         simple_lock(lock);
+       else 
+         scatter_mix((ScatterLock*)lock);
+      } else {
        if (nowait && lock->is_dirty())
          return false;   // don't do nested lock, as that may scatter_writebehind in simple_lock!
        simple_lock(lock);