How about adding journaling to the file system?

-------- Original Message --------
On Sunday, 02/22/26 at 22:13 Kenneth Gober <[email protected]> wrote:

> On Wed, Jul 24, 2024 at 1:52 PM <[email protected]> wrote:
>
>> Thanks Stuart for all these thoughts. That's a lot of great ideas.
>>
>> Let me try to clarify a few things:
>>
>> - change `do_fsck` to `do_fsck -y`
>> ---------------------------------------------
>> I assume you mean Line 410. That seems like a great idea.
>> Do I understand correctly that the normal behaviour for this `do_fsck` is to 
>> run the check, and mark filesystems dirty, and then enter single-user mode?
>> Whereas if I replace it with `do_fsck -y `, the filesystems will not be 
>> marked dirty, and it will not enter singe user mode?
>
> Apologies for reviving this old thread, but I had a recent experience with a 
> remote router that failed to come up, presumably after having local power 
> issues. This router was set up to use fsck -p -y and I learned the hard way 
> that when using -p, there are some problems that cause fsck to exit without 
> giving you the option to answer yes. Instead, you just get "UNEXPECTED 
> INCONSISTENCY; RUN fsck_ffs MANUALLY." followed a bit later by "Automatic 
> file system check failed; help!". "do_fsck -y" will not help you here.
>
> Naturally, in this situation you should of course run fsck manually and 
> decide what to do based on what fsck reports. Just blindly running fsck -y is 
> dangerous and can make a simple issue much worse. But sometimes when a device 
> is far away, you can't easily get there yourself, and you don't have someone 
> on-site who can address it, an alternative is needed.
>
> Having chosen to accept this risk, I changed /etc/rc, modifying the do_fsck 
> function as follows:
> old: fsck -p "$@"
> new: fsck -p "$@" || { for i in a d e f g h; do fsck -y \/dev\/sd0$i; done; 
> fsck -p "$@"; }
>
> The idea is that if fsck -p fails, I run fsck -y for each file system where I 
> think it's safe to do so unattended. Then I try the fsck -p command again to 
> give it a second chance to succeed (if it fails twice then the old behavior 
> remains). In this example, the file systems that I have chosen to 
> auto-correct are sd0a, sd0d, sd0e, sd0f, sd0g and sd0h. You may choose to 
> auto-correct a different set.
>
> I tested this by power-cycling a test router while reordering of libc was in 
> progress. This would ordinarily have caused the router to come up single-user 
> with the "Automatic file system check failed; help!" message, but with the 
> above change the router was able to boot normally (albeit with a ton of 
> console spam regarding repairs for files in the /usr/share/relink tree):
>
> root on sd0a (5e776adc85699112.a) swap on sd0b dump on sd0b
> WARNING: / was not properly unmounted
> Automatic boot in progress: starting file system checks.
> /dev/sd0a (5e776adc85699112.a): INCORRECT BLOCK COUNT I=32837 (4 should be 0) 
> (CORRECTED)
> /dev/sd0a (5e776adc85699112.a): FREE BLK COUNT(S) WRONG IN SUPERBLK (SALVAGED)
> /dev/sd0a (5e776adc85699112.a): SUMMARY INFORMATION BAD (SALVAGED)
> /dev/sd0a (5e776adc85699112.a): BLK(S) MISSING IN BIT MAPS (SALVAGED)
> /dev/sd0a (5e776adc85699112.a): 1891 files, 49715 used, 202132 free (116 
> frags, 25252 blocks, 0.0% fragmentation)
> /dev/sd0a (5e776adc85699112.a): MARKING FILE SYSTEM CLEAN
> /dev/sd0d (5e776adc85699112.d): INCORRECT BLOCK COUNT I=54794 (704 should be 
> 416) (CORRECTED)
> /dev/sd0d (5e776adc85699112.d): UNALLOCATED I=54976 OWNER=root MODE=100644
> /dev/sd0d: SIZE=2096 MTIME=Feb 22 20:15 2026
> FILE=/share/relink/_rebuild.GJZYRqDFYfz5/connect.so
>
> /dev/sd0d (5e776adc85699112.d): UNEXPECTED INCONSISTENCY; RUN fsck_ffs 
> MANUALLY.
> /dev/sd0e (5e776adc85699112.e): 78 files, 1779 used, 252068 free (20 frags, 
> 31506 blocks, 0.0% fragmentation)
> /dev/sd0e (5e776adc85699112.e): MARKING FILE SYSTEM CLEAN
> /dev/sd0f (5e776adc85699112.f): INCORRECT BLOCK COUNT I=49194 (128 should be 
> 0) (CORRECTED)
> /dev/sd0f (5e776adc85699112.f): FREE BLK COUNT(S) WRONG IN SUPERBLK (SALVAGED)
> /dev/sd0f (5e776adc85699112.f): SUMMARY INFORMATION BAD (SALVAGED)
> /dev/sd0f (5e776adc85699112.f): BLK(S) MISSING IN BIT MAPS (SALVAGED)
> /dev/sd0f (5e776adc85699112.f): 423 files, 15221 used, 238626 free (90 frags, 
> 29817 blocks, 0.0% fragmentation)
> /dev/sd0f (5e776adc85699112.f): MARKING FILE SYSTEM CLEAN
> /dev/sd0g (5e776adc85699112.g): INCORRECT BLOCK COUNT I=3 (4 should be 0) 
> (CORRECTED)
> /dev/sd0g (5e776adc85699112.g): UNREF FILE I=3 OWNER=root MODE=100600
> /dev/sd0g: SIZE=0 MTIME=Feb 22 20:15 2026 (CLEARED)
> /dev/sd0g (5e776adc85699112.g): 8 files, 6 used, 253841 free (33 frags, 31726 
> blocks, 0.0% fragmentation)
> /dev/sd0g (5e776adc85699112.g): MARKING FILE SYSTEM CLEAN
> /dev/sd0h (5e776adc85699112.h): 12 files, 11 used, 1520716 free (28 frags, 
> 190086 blocks, 0.0% fragmentation)
> /dev/sd0h (5e776adc85699112.h): MARKING FILE SYSTEM CLEAN
> THE FOLLOWING FILE SYSTEM HAD AN UNEXPECTED INCONSISTENCY:
> ffs: 5e776adc85699112.d (/usr)
> ** /dev/rsd0a
> ** File system is clean; not checking
> ** /dev/rsd0d
> ** Last Mounted on /usr
> ** Phase 1 - Check Blocks and Sizes
> ** Phase 2 - Check Pathnames
> UNALLOCATED I=54976 OWNER=root MODE=100644
> SIZE=2096 MTIME=Feb 22 20:15 2026
> FILE=/share/relink/_rebuild.GJZYRqDFYfz5/connect.so
>
> REMOVE? yes
>
> UNALLOCATED I=54977 OWNER=root MODE=100644
> SIZE=2080 MTIME=Feb 22 20:15 2026
> FILE=/share/relink/_rebuild.GJZYRqDFYfz5/fcntl.so
>
> REMOVE? yes
>
> UNALLOCATED I=54978 OWNER=root MODE=100644
> SIZE=2080 MTIME=Feb 22 20:15 2026
> FILE=/share/relink/_rebuild.GJZYRqDFYfz5/fsync.so
>
> REMOVE? yes
>
> UNALLOCATED I=54979 OWNER=root MODE=100644
> SIZE=2088 MTIME=Feb 22 20:15 2026
> FILE=/share/relink/_rebuild.GJZYRqDFYfz5/msgrcv.so
>
> REMOVE? yes
>
> UNALLOCATED I=54980 OWNER=root MODE=100644
> SIZE=2088 MTIME=Feb 22 20:15 2026
> FILE=/share/relink/_rebuild.GJZYRqDFYfz5/msgsnd.so
>
> REMOVE? yes
>
> (many more lines of fsck output removed, until eventually fsck -p runs again)
>
> /dev/sd0a (5e776adc85699112.a): file system is clean; not checking
> /dev/sd0d (5e776adc85699112.d): file system is clean; not checking
> /dev/sd0e (5e776adc85699112.e): file system is clean; not checking
> /dev/sd0f (5e776adc85699112.f): file system is clean; not checking
> /dev/sd0g (5e776adc85699112.g): file system is clean; not checking
> /dev/sd0h (5e776adc85699112.h): file system is clean; not checking
> pf enabled
> starting network
> reordering: ld.so libc libcrypto sshd sshd-session sshd-auth ssh-agent.
> starting early daemons: syslogd pflogd ntpd.
> starting RPC daemons:.
> savecore: /dev/sd0b: Device not configured
> checking quotas: done.
> clearing /tmp
> kern.securelevel: 0 -> 1
> creating runtime link editor directory cache.
> preserving editor files.
> starting network daemons: sshd smtpd sndiod.
> starting local daemons: cron.
> Sun Feb 22 15:16:34 EST 2026
>
> OpenBSD/amd64 (apu2d4.utility.internal) (tty00)
>
> login:

Reply via email to