kern/40474: Kernel panic after remounting raid root with softdep

>Number: 40474
>Category: kern
>Synopsis: Kernel panic after remounting raid root with softdep
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Jan 25 11:05:00 +0000 2009
>Originator: Tero Kivinen
>Release: NetBSD 5.0_BETA
>Organization:
>Environment:
System: NetBSD confusion.i.kivinen.iki.fi 5.0_BETA NetBSD 5.0_BETA (GENERIC)
#0: Sat Jan 24 19:01:52 EET 2009 root@:/usr/obj/sys/arch/i386/compile/GENERIC
i386
Architecture: i386
Machine: i386
>Description:
The system has mirrored raid as root, and when I boot it up
and then run mount -o softdep -u / the command works, but after
that next time I start "vi" the machine panics. The mount
command does not show that the softdep took effect (i.e
it still list options as local), and if I can still
run some other programs from the root filesystem. The
file edited with vi does not matter, and crash happens
even if no file is given. If this is tried on the second
(non root disk) then this does not happen, even if the
vi binary is copied to the other disk (i.e. mount the
another disk without softdep, remount it with -u -o softdep
and then try to run vi from there do work).
I assume this might be related to somehow to the way
vi creates temp files or something.
I have several kernel dumps so if more information is
needed I can get them with gdb. Here is stack trace
from gdb:
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386--netbsdelf"...
(gdb) target kvm netbsd.4.core
#0 0xc053acf2 in cpu_reboot ()
(gdb) bt
#0 0xc053acf2 in cpu_reboot ()
#1 0xc01b2d19 in db_sync_cmd ()
#2 0xc01b3468 in db_command ()
#3 0xc01b36e3 in db_command_loop ()
#4 0xc01b6600 in db_trap ()
#5 0xc0535d3b in kdb_trap ()
#6 0xc053d993 in trap ()
#7 0xc010cb1f in calltrap ()
#8 0xc053441c in breakpoint ()
#9 0xc047f808 in panic ()
#10 0xc03c6f28 in softdep_setup_inomapdep ()
#11 0xc03b2626 in ffs_nodealloccg ()
#12 0xc03b0311 in ffs_hashalloc ()
#13 0xc03b487a in ffs_valloc ()
#14 0xc03f1964 in ufs_makeinode ()
#15 0xc03f1dea in ufs_create ()
#16 0xc04c72bc in VOP_CREATE ()
#17 0xc04c1912 in vn_open ()
#18 0xc04bdd00 in sys_open ()
#19 0xc053d45d in syscall ()
#20 0xc0100514 in syscall1 ()
(gdb) quit
>How-To-Repeat:
Boot up machine with root on mirrored raid, without
listing softdep option in fstab entry. Remount root
using softdep with
# mount -u -o softdep /
Start vi:
# vi
Kernel panics immediately. I have not verified
whether the raid is required, but it seems to
be related to the root disk.
>Fix:
Do not remount root with softdep.