On Wed, Dec 04, 2024 at 10:14:50PM -0800, Darrick J. Wong wrote: > The function opportunistically moves sc->tempip from the regular > directory tree to the metadata directory tree if sc->ip is part of the > metadata directory tree. However, the scrub setup functions grab sc->ip > and create sc->tempip before we actually get around to checking if the > file is the right type for the scrubber. > > IOWs, you can invoke the symlink scrubber with the file handle of a > subdirectory in the metadir. xrep_setup_symlink will create a temporary > symlink file, xrep_tempfile_adjust_directory_tree will foolishly try to > set the METADATA flag on the temp symlink, which trips the inode > verifier in the inode item precommit, which shuts down the filesystem > when expensive checks are turned on. If they're /not/ turned on, then > xchk_symlink will return ENOENT when it sees that it's been passed a > symlink. Maybe just write this down in a big fat comment?