From 5621bb5aff95a252c0a4a00823c2b18557e12695 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 d8028ddf7dc57..4c26a8d521660 100644 --- a/src/mds/CDentry.cc +++ b/src/mds/CDentry.cc @@ -688,7 +688,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