From: Patrick Donnelly Date: Tue, 28 Jan 2025 18:06:36 +0000 (-0500) Subject: mds: do not path traverse a damaged dirfrag X-Git-Tag: testing/wip-jcollin-testing-20251107.120120-reef^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=46ef9103ee09672d2316f86fa14aa00b1b12e005;p=ceph-ci.git mds: do not path traverse a damaged dirfrag Fixes: https://tracker.ceph.com/issues/69695 Signed-off-by: Patrick Donnelly (cherry picked from commit 3243af47d60558227263203cdc4f9b9f0ebb3f5e) Conflicts: src/mds/MDCache.cc: no pdir --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index e4eab741d82..810d568ef13 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -8388,6 +8388,12 @@ int MDCache::path_traverse(MDRequestRef& mdr, MDSContextFactory& cf, } ceph_assert(curdir); + if (mds->damage_table.is_dirfrag_damaged(curdir)) { + dout(4) << "traverse: stopped lookup at dirfrag " + << *curdir << "/" << path[depth] << " snap=" << snapid << dendl; + return -CEPHFS_EIO; + } + #ifdef MDS_VERIFY_FRAGSTAT if (curdir->is_complete()) curdir->verify_fragstat();