Summary: | vfs_mountroot_shuffle sets wrong mnt_stat.mntonname | ||||||
---|---|---|---|---|---|---|---|
Product: | Base System | Reporter: | Denis V. Meltsaykin <dvm.avgoor> | ||||
Component: | kern | Assignee: | freebsd-bugs (Nobody) <bugs> | ||||
Status: | New --- | ||||||
Severity: | Affects Some People | CC: | bugmeister | ||||
Priority: | --- | ||||||
Version: | 10.0-STABLE | ||||||
Hardware: | Any | ||||||
OS: | Any | ||||||
Attachments: |
|
^Triage: Properly set patch flag. To submitter: is this aging PR still relevant? (In reply to Mark Linimon from comment #1) Not sure, but looking at the HEAD of vfs_mountroot.c seems like nothing changed since 2014. I'm not involved in a FreeBSD related field anymore, so I unfortunately don't know from the top of my head. We can probably close this report, as it seems like nobody really needs this fix, since the nested root mounts are not used anywhere. |
Created attachment 146853 [details] patch In case if you have configured /.mount.conf with several rootfs options like (for example): .md /mfs_root.lz readonly ufs:/dev/ufs/rootimg .timeout 3 ufs:/dev/ufs/bootfail .ask after fail at first rootfs kernel proceeds to next and loads it correct. But after loading system there are wrong options in mounted filesystems: /dev/ufs/failsafe on / (ufs, local, read-only) /dev/ufs/bootfail on /.mount (ufs, local, read-only) /dev/ufs/boot on /.mount (ufs, local, read-only) And a real ufs/boot is under /.mount/.mount/ instead of /.mount In this case you can't unmount it or remount to RW. Underlying filesystems become useless. This happens because of vfs_mountroot_shuffle() sets mporoot->mnt_stat.f_mntonname unconditional, despite the real FS hierarchy. I have attached something looks like a patch, please review it. I hope it will help. Thank you.