diff options
author | Chuck Silvers <chs@FreeBSD.org> | 2023-08-10 16:55:47 +0000 |
---|---|---|
committer | Chuck Silvers <chs@FreeBSD.org> | 2023-08-10 16:59:06 +0000 |
commit | 60a41168d195cc09f7351c2c2bcafc389ed52406 (patch) | |
tree | 4eec41edc2f02f8c4b2ce58ce4841a2ec7ac2b2c | |
parent | aa7957345732816fb0ba8308798d2f79f45597f9 (diff) | |
download | src-60a41168d195cc09f7351c2c2bcafc389ed52406.tar.gz src-60a41168d195cc09f7351c2c2bcafc389ed52406.zip |
UFS: panic rather than forcibly unmount the root fs
If the root fs is forcibly unmounted then basically every process
will die with a SEGV as soon as it tries to run again because libc.so
is gone, which leaves the system basically hung. It seems better
to just panic instead, so let's do that.
Requested-by: karels
Reviewed-by: imp, mckusick, karels
Sponsored-by: Netflix
Differential Revision: https://reviews.freebsd.org/D41387
-rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 64236d4e98d9..b2cd2d30bc04 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -303,6 +303,9 @@ ffs_fsfail_cleanup_locked(struct ufsmount *ump, int error) mtx_assert(UFS_MTX(ump), MA_OWNED); if (error == ENXIO && (ump->um_flags & UM_FSFAIL_CLEANUP) == 0) { ump->um_flags |= UM_FSFAIL_CLEANUP; + if (ump->um_mountp == rootvnode->v_mount) + panic("UFS: root fs would be forcibly unmounted"); + /* * Queue an async forced unmount. */ |