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>
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;