在 2025/9/7 09:31, Chris Murphy 写道:
kernel with mount failures: 6.17.0-0.rc4.36.fc43.x86_64 6.16.4-200.fc42.x86_64 6.15.11-200.fc42.x86_64 # mount -o ro,rescue=usebackuproot,nologreplay,ibadroots /dev/loop0 /mnt mount: /mnt: fsconfig system call failed: btrfs: Unknown parameter 'nologreplay'. dmesg(1) may have more information after failed mount system call. # mount -o ro,rescue=usebackuproot /dev/loop0 /mnt # umount /mnt # mount -o ro,rescue=usebackuproot,ibadroots /dev/loop0 /mnt # mount: /mnt: fsconfig system call failed: btrfs: Unknown parameter 'ibadroots'. dmesg(1) may have more information after failed mount system call. # mount -o ro,rescue=ibadroots /dev/loop0 /mnt # There are no kernel messages for the failures. Looks like single rescue options work, but multiple rescue options separated by comma fail.
It looks like there is no longer combined "rescue=" since 6.8, where we switched to the new fsconfig mount method.
And even before that, the separator for "rescue=" command group is ':', not ',' as that conflicts with the default separator.
There is no support for using ',' inside "rescue=" from the very beginning. Thanks, Qu
Any rescue option after the first comma, results in an fsconfig complaint. Since it looks like fsconfig migration fallout, I'll cc some additional folks, and fs-devel. --- I get different results with kernel 6.14.11-300.fc42.x86_64 but I think some of the bugs are fixed in later kernels hence the different behavior. And in any case it's EOL so I won't test any further back than this kernel. # mount -o ro,rescue=usebackuproot,nologreplay,ibadroots /dev/loop0 /mnt mount: /mnt: fsconfig system call failed: btrfs: Unknown parameter 'ibadroots'. dmesg(1) may have more information after failed mount system call. Notice the complaint is about ibadroots, not nologreplay. And there is a kernel message this time. Sep 06 19:44:38 fnuc.local kernel: BTRFS warning: 'nologreplay' is deprecated, use 'rescue=nologreplay' instead But there's more. All of these commands result in mount succeeded, but kernel messages don't indicate they were used. # mount -o ro,rescue=ibadroots /dev/loop0 /mnt # umount /mnt # mount -o ro,rescue=usebackuproot /dev/loop0 /mnt # umount /mnt # mount -o ro,rescue=nologreplay /dev/loop0 /mnt This one has yet another different outcome, I don't know why. # mount -o ro,rescue=idatacsum /dev/loop0 /mnt mount: /mnt: fsconfig system call failed: btrfs: Bad value for 'rescue'. dmesg(1) may have more information after failed mount system call. -- Chris Murphy