Subject: Re: union filesystem / locking
To: None <current-users@netbsd.org>
From: Iain Hibbert <plunky@rya-online.net>
List: current-users
Date: 02/01/2007 08:27:05
On Wed, 31 Jan 2007, Iain Hibbert wrote:

>    I updated my sources the other day (after several months) and find that
> union filesystem has gone haywire..  I'm not getting my backtrace copied
> to dmesg, but with a LOCKDEBUG and DIAGNOSTIC kernel I see the following
> very repeatably:
>
> boot -s
> NetBSD galant 4.99.9 NetBSD 4.99.9 (GALANT) #0: Sun Jan 28 22:56:06 GMT 2007  plunky@galant:/var/obj/sys/arch/i386/compile/GALANT i386
> $ mount -t union -o -b /etc /mnt
> $ ls /mnt
> (is ok)
> $ ls -l /mnt
> panic: lockmgr: release of unlocked lock!
> db> bt
> cpu_Debugger(..
> panic(..
> _lockmgr(..
> ufs_unlock(..
> VOP_UNLOCK(..
> union_mkshadow(..
> union_lookup(..
> VOP_LOOKUP(..
> lookup(..
> namei(..
> sys___lstat30(..
> syscall_plain(..
>
> Is this likely to be due to a recent change?  I use a custom kernel
> configuration to keep the size down but will build a GENERIC_LAPTOP and
> see if there is any difference..

No, it gets slightly further but:

boot -s
NetBSD 4.99.9 (GENERIC_LAPTOP) #2: Wed Jan 31 22:27:17 GMT 2007
$ mount -t union -o -b /etc /mnt
$ ls -l /mnt
panic: vref used where vget required, vp 0xcb1a4694
db> bt
cpu_Debugger(..
panic(..
vref(..
union_allocvp(..
union_lookup(..
VOP_LOOKUP(..
lookup(..
namei(..
syscall_plain(..

(and +DIAGNOSTIC+LOCKDEBUG won't even boot for other reasons)

anybody have any clues?

iain