]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix crash when REQSCATTER races with an actual scatter/MIX
authorSage Weil <sage@newdream.net>
Wed, 18 Aug 2010 22:17:55 +0000 (15:17 -0700)
committerSage Weil <sage@newdream.net>
Wed, 18 Aug 2010 22:17:55 +0000 (15:17 -0700)
src/mds/Locker.cc

index 99bcf80105a160c705839abf8f5d9f309b341e5b..a3d99c4eed0493e8e2fc470f56201bf3d2ae0985 100644 (file)
@@ -3792,7 +3792,8 @@ void Locker::handle_file_lock(ScatterLock *lock, MLock *m)
        */
       dout(7) << "handle_file_lock got scatter request on " << *lock
              << " on " << *lock->get_parent() << dendl;
-      file_mixed(lock);
+      if (lock->get_state() != LOCK_MIX)  // i.e., the reqscatter didn't race with an actual mix/scatter
+       file_mixed(lock);
     } else {
       dout(7) << "handle_file_lock ignoring scatter request on " << *lock
              << " on " << *lock->get_parent() << dendl;