From b96ae57bdca8c5a710586e04eafbbc790625caef Mon Sep 17 00:00:00 2001 From: Leonid Usov Date: Sun, 12 May 2024 03:36:32 +0300 Subject: [PATCH] squid: mds: don't clear `AUTHPIN_FROZEN` until `FROZEN` in rename_prep Signed-off-by: Leonid Usov (cherry picked from commit 86d6533351606a86978e117f127d29d63ea588ce) Fixes: https://tracker.ceph.com/issues/66154 --- src/mds/Server.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 4f0b9940ed5..8aab21df7ec 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -9980,15 +9980,15 @@ void Server::handle_peer_rename_prep(const MDRequestRef& mdr) dout(10) << " freezing srci " << *srcdnl->get_inode() << " with allowance " << allowance << dendl; bool frozen_inode = srcdnl->get_inode()->freeze_inode(allowance); - // unfreeze auth pin after freezing the inode to avoid queueing waiters - if (srcdnl->get_inode()->is_frozen_auth_pin()) - mdr->unfreeze_auth_pin(); - if (!frozen_inode) { - srcdnl->get_inode()->add_waiter(CInode::WAIT_FROZEN, new C_MDS_RetryRequest(mdcache, mdr)); - return; + srcdnl->get_inode()->add_waiter(CInode::WAIT_FROZEN, new C_MDS_RetryRequest(mdcache, mdr)); + return; } + // unfreeze auth pin after freezing the inode to avoid queueing waiters + if (srcdnl->get_inode()->is_frozen_auth_pin()) + mdr->unfreeze_auth_pin(); + /* * set ambiguous auth for srci * NOTE: we don't worry about ambiguous cache expire as we do -- 2.39.5