btrfs-progs: add warning for -s option of btrfs-image

The filename sanitization is not recommended as it introduces mismatches
between DIR_ITEM and INODE_REF.

Even hash collision mode (double "-s" option) is not ensured to always
find a hash collision, and when fails to find one, a mismatch happens.

And when a mismatch happens, the kernel will not resolve the path
correctly since kernel uses the hash from DIR_ITEM to lookup the child
inode.

So add a warning into the "-s" option of btrfs-image.

Signed-off-by: Qu Wenruo <wqu@suse.com>
This commit is contained in:
Qu Wenruo 2024-07-08 13:17:06 +09:30 committed by David Sterba
parent 565d6d57f4
commit fd47b9b1e1
1 changed files with 11 additions and 7 deletions

View File

@ -37,13 +37,17 @@ OPTIONS
file system will not be able to be mounted. file system will not be able to be mounted.
-s -s
Sanitize the file names when generating the image. One -s means just Sanitize the file names when generating the image. Not recommended as
generate random garbage, which means that the directory indexes won't match up this would introduce new file name hash mismatches, thus if your
since the hashes won't match with the garbage filenames. Using *-s* will problem involves subvolume tress, it can even mask existing problems.
calculate a collision for the filename so that the hashes match, and if it Furthermore kernels can not do proper path resolution due to the
can't calculate a collision then it will just generate garbage. The collision introduced hash mismatches.
calculator is very time and CPU intensive so only use it if you are having
problems with your file system tree and need to have it mostly working. One *-s* means just generate random garbage, which means that the
directory hash won't match its file names. Using two *-s* will
calculate a collision for the file name so that the hashes match, and
if it can't calculate a collision then it will just generate garbage.
The collision calculator is very time and CPU intensive.
-w -w
Walk all the trees manually and copy any blocks that are referenced. Use this Walk all the trees manually and copy any blocks that are referenced. Use this