From f50693f62387e48c5c07ba913f2d384de0fe2d5c Mon Sep 17 00:00:00 2001 From: Xiubo Li Date: Tue, 28 Nov 2023 11:21:38 +0800 Subject: [PATCH] mds: allow lock state to be LOCK_MIX_SYNC in replica for filelock When the auth MDS is transmitting state from LOCK_MIX to LOCK_SYNC it will transmit the state to a intermidiate state LOCK_MIX_SYNC. Then notifies the replicate MDSs and waits for the acks. But just in case for some reasons the replicate MDSs couldn't successfully transmit the state from LOCK_MIX to LOCK_MIX_SYNC and then LOCK_MIX_SYNC2. And just the auth MDS failover or restart and then resend the notification. Fixes: https://tracker.ceph.com/issues/54833 Signed-off-by: Xiubo Li --- src/mds/Locker.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index b4a28fb8379..de5b920efaf 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -5765,6 +5765,7 @@ void Locker::handle_file_lock(ScatterLock *lock, const cref_t &m) case LOCK_AC_SYNC: ceph_assert(lock->get_state() == LOCK_LOCK || lock->get_state() == LOCK_MIX || + lock->get_state() == LOCK_MIX_SYNC || lock->get_state() == LOCK_MIX_SYNC2); if (lock->get_state() == LOCK_MIX) { -- 2.39.5