From 6feab3cbf42f7606d0076bfcf8cef1483e69a814 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 5 Jul 2011 08:58:26 -0700 Subject: [PATCH] mds: fix file_excl assert If we are in XSYN state and want to move to anything else, we must go via EXCL, but we may not be loner anymore. Weaken the file_excl() assert so we don't crash. Reported-by: Fyodor Ustinov Signed-off-by: Sage Weil --- src/mds/Locker.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index a87edb10563ff..27fa20d3df296 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -3979,7 +3979,8 @@ void Locker::file_excl(ScatterLock *lock, bool *need_issue) assert(in->is_auth()); assert(lock->is_stable()); - assert(in->get_loner() >= 0 && in->mds_caps_wanted.empty()); + assert((in->get_loner() >= 0 && in->mds_caps_wanted.empty()) || + (lock->get_state() == LOCK_XSYN)); // must do xsyn -> excl -> switch (lock->get_state()) { case LOCK_SYNC: lock->set_state(LOCK_SYNC_EXCL); break; -- 2.39.5