From: Leonid Usov Date: Sun, 12 May 2024 00:36:32 +0000 (+0300) Subject: mds: don't clear `AUTHPIN_FROZEN` until `FROZEN` in rename_prep X-Git-Tag: v20.0.0~1899^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=86d6533351606a86978e117f127d29d63ea588ce;p=ceph.git mds: don't clear `AUTHPIN_FROZEN` until `FROZEN` in rename_prep Signed-off-by: Leonid Usov --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index e46f69b3297c..8961e9b128af 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -10005,15 +10005,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