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 <xiubli@redhat.com>
(cherry picked from commit
f50693f62387e48c5c07ba913f2d384de0fe2d5c)
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) {