[PATCH 35/41] xfs_repair: metadata dirs are never plausible root dirs

Darrick J. Wong
2024-12-06T23:48:46Z

From: Darrick J. Wong <djwong@kernel.org>

Metadata directories are never candidates to be the root of the
user-accessible directory tree. Update has_plausible_rootdir to ignore
them all, as well as detecting the case where the superblock incorrectly
thinks both trees have the same root.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
repair/xfs_repair.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c
index 70cab1ad852a21..30b014898c3203 100644
--- a/repair/xfs_repair.c
+++ b/repair/xfs_repair.c
@@ -546,9 +546,15 @@ has_plausible_rootdir(
int error;
bool ret = false;

+ if (xfs_has_metadir(mp) &&
+ mp->m_sb.sb_rootino == mp->m_sb.sb_metadirino)
+ goto out;
+
error = -libxfs_iget(mp, NULL, mp->m_sb.sb_rootino, 0, &ip);
if (error)
goto out;
+ if (xfs_is_metadir_inode(ip))
+ goto out_rele;
if (!S_ISDIR(VFS_I(ip)->i_mode))
goto out_rele;