From c0f16ecc21861f3eb8fb5410c55ef93d5009d99c Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Thu, 1 Feb 2024 09:15:37 -0500 Subject: [PATCH] mds: ensure snapclient is synced before corruption check During resolve, orphan dirfrags are purged which may result in dentry commits. If the snapclient is not sync'd (which normally happens as the last step of up:resolve), then the snapclient indicates the last sequence is 1 which is always less than a dentry's legitimate "first" value. Fixes: https://tracker.ceph.com/issues/64058 Signed-off-by: Patrick Donnelly (cherry picked from commit caa34c1f6102f88e2c07f58af72bd886cbcc33b3) --- src/mds/CDentry.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mds/CDentry.cc b/src/mds/CDentry.cc index b6d169b9e0f85..6722f0f2a3670 100644 --- a/src/mds/CDentry.cc +++ b/src/mds/CDentry.cc @@ -702,7 +702,7 @@ bool CDentry::check_corruption(bool load) { auto&& snapclient = dir->mdcache->mds->snapclient; auto next_snap = snapclient->get_last_seq()+1; - if (first > last || (snapclient->is_server_ready() && first > next_snap)) { + if (first > last || (snapclient->is_synced() && first > next_snap)) { if (load) { dout(1) << "loaded already corrupt dentry: " << *this << dendl; corrupt_first_loaded = true; -- 2.39.5