From: Xiubo Li Date: Tue, 28 Nov 2023 03:21:38 +0000 (+0800) Subject: mds: allow lock state to be LOCK_MIX_SYNC in replica for filelock X-Git-Tag: testing/wip-batrick-testing-20240411.154038~363^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f50693f62387e48c5c07ba913f2d384de0fe2d5c;p=ceph-ci.git 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 --- 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) {