]> git.apps.os.sepia.ceph.com Git - xfsprogs-dev.git/commitdiff
xfs_repair: metadata dirs are never plausible root dirs
authorDarrick J. Wong <djwong@kernel.org>
Thu, 21 Nov 2024 00:24:21 +0000 (16:24 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 24 Dec 2024 02:01:28 +0000 (18:01 -0800)
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>
Reviewed-by: Christoph Hellwig <hch@lst.de>
repair/xfs_repair.c

index 70cab1ad852a211dfd8acfc650b29760199790ff..30b014898c32036fdb7818bd962b60edadb362fb 100644 (file)
@@ -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;