From 4ec2b03f45f56718a593c834dd67ab2043a758bc Mon Sep 17 00:00:00 2001 From: Xiubo Li Date: Tue, 12 Sep 2023 10:24:59 +0800 Subject: [PATCH] Revert "mds: clear the STATE_UNLINKING state when the unlink fails" This reverts commit 417f24782cfcf45827dff74adf8df2283b2a2c72. Fixes: https://tracker.ceph.com/issues/61818 Signed-off-by: Xiubo Li --- src/mds/Server.cc | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index c2e54dcd1f345..752756483780a 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -6880,7 +6880,6 @@ bool Server::is_unlink_pending(CDentry *dn) void Server::wait_for_pending_unlink(CDentry *dn, MDRequestRef& mdr) { - dout(20) << __func__ << " dn " << *dn << dendl; mds->locker->drop_locks(mdr.get()); auto fin = new C_MDS_RetryRequest(mdcache, mdr); dn->get(CDentry::PIN_PURGING); @@ -7966,13 +7965,11 @@ void Server::handle_client_unlink(MDRequestRef& mdr) if (rmdir) { // do empty directory checks if (_dir_is_nonempty_unlocked(mdr, in)) { - dn->state_clear(CDentry::STATE_UNLINKING); - respond_to_request(mdr, -CEPHFS_ENOTEMPTY); + respond_to_request(mdr, -CEPHFS_ENOTEMPTY); return; } } else { dout(7) << "handle_client_unlink on dir " << *in << ", returning error" << dendl; - dn->state_clear(CDentry::STATE_UNLINKING); respond_to_request(mdr, -CEPHFS_EISDIR); return; } @@ -7980,7 +7977,6 @@ void Server::handle_client_unlink(MDRequestRef& mdr) if (rmdir) { // unlink dout(7) << "handle_client_rmdir on non-dir " << *in << ", returning error" << dendl; - dn->state_clear(CDentry::STATE_UNLINKING); respond_to_request(mdr, -CEPHFS_ENOTDIR); return; } @@ -7988,10 +7984,8 @@ void Server::handle_client_unlink(MDRequestRef& mdr) CInode *diri = dn->get_dir()->get_inode(); if ((!mdr->has_more() || mdr->more()->witnessed.empty())) { - if (!check_access(mdr, diri, MAY_WRITE)) { - dn->state_clear(CDentry::STATE_UNLINKING); + if (!check_access(mdr, diri, MAY_WRITE)) return; - } } // -- create stray dentry? -- @@ -8030,7 +8024,6 @@ void Server::handle_client_unlink(MDRequestRef& mdr) if (in->is_dir() && _dir_is_nonempty(mdr, in)) { respond_to_request(mdr, -CEPHFS_ENOTEMPTY); - dn->state_clear(CDentry::STATE_UNLINKING); return; } -- 2.39.5