Hi,

this morning i had a machine panic with

panic: update: rofs mod  
Starting stack trace...  
panic(ffffffff81df5736) at panic+0x11d  
ffs_sync(ffff800001433400,3,0,fffffd887f7bee40,ffff8000ffff9b30) at
ffs_sync+0x1f3  
sync_fsync(ffff800023b1c428) at sync_fsync+0x144  
VOP_FSYNC(fffffd816b8c3d20,fffffd887f7bee40,3,ffff8000ffff9b30) at
VOP_FSYNC+0x4b  
syncer_thread(ffff8000ffff9b30) at syncer_thread+0x1af  
end trace frame: 0x0, count: 252  
End of stack trace.  

This is an OpenBSD 6.8.

The error comes from ffs_sync() in ufs/ffs/ffs_vfsops.c, as they are no
non-ffs filesystems mounted.

Maybe this is related:
As this box has some large filesystems, we mount them read-only and only go
to read-write when we actually need to change contents. For some of the
filesystems thats multiple times per day.

fs check needed to repair a few things on /home and /var, but those are
always moutned rw, and not large.

Anything else i could look at?

/Benno


int
ffs_sync(struct mount *mp, int waitfor, int stall, struct ucred *cred,
struct proc *p)
{
        struct ufsmount *ump = VFSTOUFS(mp);
        struct fs *fs;
        int error, allerror = 0, count, clean, fmod;
        struct ffs_sync_args fsa;

        fs = ump->um_fs;
        /*
         * Write back modified superblock.
         * Consistency check that the superblock
         * is still in the buffer cache.
         */
        if (fs->fs_fmod != 0 && fs->fs_ronly != 0) {
                printf("fs = %s\n", fs->fs_fsmnt);
                panic("update: rofs mod");
        }

Reply via email to