On Tue, Jan 28, 2014 at 05:33, Andres Perera wrote:

> do you understand that disks have write caches that don't give a hoot
> about posix mkdir() rename() and so on?
> 
> can bit rot change a inode type from directory to file, and vice versa?
> 
> do you want the kernel to figure these out after the fact and
> retroactively panic() for each occurence, neatly queueing them boot
> after boot or do you want to grow a pair of balls instead?

./ffs/ffs_alloc.c:              panic("ffs_alloc: bad size");
./ffs/ffs_alloc.c:              panic("ffs_alloc: missing credential");
./ffs/ffs_alloc.c:              panic("ffs_realloccg: bad size");
./ffs/ffs_alloc.c:              panic("ffs_realloccg: missing credential");
./ffs/ffs_alloc.c:              panic("ffs_realloccg: bad bprev");
./ffs/ffs_alloc.c:                              panic("ffs_realloccg: bad 
blockno");
./ffs/ffs_alloc.c:                              panic("ffs_realloccg: small 
buf");
./ffs/ffs_alloc.c:              panic("ffs_realloccg: bad optim");
./ffs/ffs_alloc.c:                      panic("ffs_realloccg: small buf 2");
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblks: unallocated 
block 1");
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblks: non-logical 
cluster");
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblks: non-physical 
cluster %d", i);
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblk: start == end");
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblks: unallocated 
block 2");
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblks: alloc 
mismatch");
./ffs/ffs_alloc.c:                      panic("ffs1_reallocblks: unallocated 
block 3");
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblks: unallocated 
block 1");
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblks: non-logical 
cluster");
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblks: non-physical 
cluster %d", i);
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblk: start == end");
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblks: unallocated 
block 2");
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblks: alloc 
mismatch");
./ffs/ffs_alloc.c:                      panic("ffs2_reallocblks: unallocated 
block 3");
./ffs/ffs_alloc.c:              panic("ffs_valloc: dup alloc");
./ffs/ffs_alloc.c:                      panic("ffs_clusteralloc: map mismatch");
./ffs/ffs_alloc.c:              panic("ffs_clusteralloc: allocated out of 
group");
./ffs/ffs_alloc.c:                      panic("ffs_clusteralloc: lost block");
./ffs/ffs_alloc.c:                      panic("ffs_nodealloccg: map corrupted");
./ffs/ffs_alloc.c:      panic("ffs_nodealloccg: block not in map");
./ffs/ffs_alloc.c:              panic("ffs_blkfree: bad size");
./ffs/ffs_alloc.c:                      panic("ffs_blkfree: freeing free 
block");
./ffs/ffs_alloc.c:                              panic("ffs_blkfree: freeing 
free frag");
./ffs/ffs_alloc.c:              panic("ffs_freefile: range: dev = 0x%x, ino = 
%d, fs = %s",
./ffs/ffs_alloc.c:                      panic("ffs_freefile: freeing free 
inode");
./ffs/ffs_alloc.c:              panic("ffs_checkblk: bad size");
./ffs/ffs_alloc.c:              panic("ffs_checkblk: bad block %lld", (long 
long)bno);
./ffs/ffs_alloc.c:                      panic("ffs_checkblk: partially free 
fragment");
./ffs/ffs_alloc.c: * It is a panic if a request is made to find a block if none 
are
./ffs/ffs_alloc.c:                      panic("ffs_alloccg: map corrupted");
./ffs/ffs_alloc.c:      panic("ffs_alloccg: block not in map");
./ffs/ffs_balloc.c:             panic("ffs1_balloc: blk too big");
./ffs/ffs_balloc.c:             panic ("ffs1_balloc: ufs_bmaparray returned 
indirect block");
./ffs/ffs_balloc.c:                     panic("Could not unwind indirect block, 
error %d", r);
./ffs/ffs_balloc.c:             panic("ffs2_balloc: block too big");
./ffs/ffs_balloc.c:             panic("ffs2_balloc: ufs_bmaparray returned 
indirect block");
./ffs/ffs_balloc.c:                             panic("ffs2_balloc: unwind 
failed");
./ffs/ffs_inode.c:              panic("ffs_update: bad link cnt");
./ffs/ffs_inode.c:                      panic("ffs_truncate: partial truncate 
of symlink");
./ffs/ffs_inode.c:                      panic("ffs_truncate: newspace");
./ffs/ffs_inode.c:                      panic("ffs_truncate1");
./ffs/ffs_inode.c:                      panic("ffs_truncate2");
./ffs/ffs_inode.c:                      panic("ffs_indirtrunc: bad buffer 
size");
./ffs/ffs_subr.c:__dead void panic(const char *, ...);
./ffs/ffs_subr.c:               panic("Disk buffer overlap");
./ffs/ffs_vfsops.c:             panic("ffs_reload: dirty2");
./ffs/ffs_vfsops.c:             panic("ffs_reload: dirty1");
./ffs/ffs_vfsops.c:             panic("ffs_statfs");
./ffs/ffs_vfsops.c:             panic("ffs_statfs");
./ffs/ffs_vfsops.c:             panic("update: rofs mod");
./ffs/ffs_vfsops.c:             panic("ffs_vget: alien ino_t %llu", (unsigned 
long long)ino);
./ffs/ffs_vnops.c:              panic("ffs_read: mode");
./ffs/ffs_vnops.c:                      panic("ffs_read: short symlink");
./ffs/ffs_vnops.c:              panic("ffs_read: type %d", vp->v_type);
./ffs/ffs_vnops.c:              panic("ffs_write: mode");
./ffs/ffs_vnops.c:                      panic("ffs_write: nonsync dir write");
./ffs/ffs_vnops.c:              panic("ffs_write: type");
./ffs/ffs_vnops.c:                      panic("ffs_fsync: not dirty");
./mfs/mfs_vfsops.c:             panic("mfs_mount: dup dev");
./mfs/mfs_vnops.c:              panic("mfs_open not VBLK");
./mfs/mfs_vnops.c:              panic("mfs_strategy: bad dev");
./mfs/mfs_vnops.c:              panic("mfs_inactive: not inactive");
./mfs/mfs_vnops.c:      panic("mfs_badop called");
./ufs/ufs_vnops.c:              panic("chown: lost quota");
./ufs/ufs_vnops.c:              panic("ufs_link: no name");
./ufs/ufs_vnops.c:              panic("ufs_rename: no name");
./ufs/ufs_vnops.c:                      panic("ufs_rename: lost from startdir");
./ufs/ufs_vnops.c:                      panic("ufs_rename: lost to startdir");
./ufs/ufs_vnops.c:                      panic("rename: EXDEV");
./ufs/ufs_vnops.c:                      panic("rename: EXDEV");
./ufs/ufs_vnops.c:                      panic("ufs_rename: same file");
./ufs/ufs_vnops.c:              panic("ufs_rename: lost from startdir");
./ufs/ufs_vnops.c:                      panic("ufs_rename: lost dir entry");
./ufs/ufs_vnops.c:                      panic("ufs_rename: lost dir entry");
./ufs/ufs_vnops.c:              panic("ufs_mkdir: no name");
./ufs/ufs_vnops.c:              panic("ufs_strategy: spec");
./ufs/ufs_vnops.c:              panic("ufs_makeinode: no name");
./ufs/ufs_bmap.c:               panic("ufs_bmaparray: invalid arguments");
./ufs/ufs_bmap.c:                       panic("ufs_bmaparray: indirect block 
not in cache");
./ufs/ufs_bmap.c:               panic ("ufs_getlbns: Invalid indirect block 
%lld specified",
./ufs/ufs_bmap.c:               panic("ufs_getlbns: indirect block %lld not 
found",
./ufs/ufs_dirhash.c:                    panic("ufsdirhash_lookup: bad offset in 
hash array");
./ufs/ufs_dirhash.c:            panic("ufsdirhash_findfree: free mismatch");
./ufs/ufs_dirhash.c:                    panic("ufsdirhash_dirtrunc: blocks in 
use");
./ufs/ufs_dirhash.c:                    panic("ufsdirhash_dirtrunc: first free 
corrupt");
./ufs/ufs_dirhash.c:            panic("ufsdirhash_checkblock: bad offset");
./ufs/ufs_dirhash.c:                    panic("ufsdirhash_checkblock: bad dir");
./ufs/ufs_dirhash.c:                            panic("ufsdirhash_checkblock: 
bad dir inode");
./ufs/ufs_dirhash.c:            /* Check that the entry exists (will panic if 
it doesn't). */
./ufs/ufs_dirhash.c:            panic("ufsdirhash_checkblock: bad dir end");
./ufs/ufs_dirhash.c:            panic("ufsdirhash_checkblock: bad free count");
./ufs/ufs_dirhash.c:                    panic("ufsdirhash_checkblock: bad 
first-free");
./ufs/ufs_dirhash.c:            panic("ufsdirhash_checkblock: missing 
first-free entry");
./ufs/ufs_dirhash.c: * Returns a slot number, and panics on failure.
./ufs/ufs_dirhash.c:            panic("ufsdirhash_findslot: '%.*s' not found", 
namelen, name);
./ufs/ufs_lookup.c:             panic("bad dir");
./ufs/ufs_lookup.c:             panic("ufs_makedirentry: missing name");
./ufs/ufs_lookup.c:                     panic("ufs_direnter: newblk");
./ufs/ufs_lookup.c:                     panic("ufs_direnter: compact1");
./ufs/ufs_lookup.c:                     panic("ufs_direnter: compact2");
./ufs/ufs_quota.c:              panic ("ufs_quota_free_blocks2: vnode is not 
locked");
./ufs/ufs_quota.c:              panic ("ufs_quota_free_blocks2: vnode is not 
locked");
./ufs/ufs_quota.c:              panic ("chkdquot: vnode is not locked");
./ufs/ufs_quota.c:                      panic("missing dquot");
./ufs/ufs_quota.c:              panic ("quotaon: mount point not busy");
./ufs/ufs_quota.c:              panic ("quotaoff: mount point not busy");
./ufs/ufs_quota.c:                      panic("free dquot isn't");
./ufs/ufs_quota.c:              panic("dqsync: dquot");
./ufs/ufs_quota.c:              panic("dqsync: file");

Reply via email to