kern/137588: LOR unionfs

Danny Braniss danny at cs.huji.ac.il
Sun Aug 9 07:30:02 UTC 2009


>Number:         137588
>Category:       kern
>Synopsis:       LOR unionfs
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Aug 09 07:30:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Danny Braniss
>Release:        FreeBSD 8.0-BETA2 amd64
>Organization:
>Environment:
System: FreeBSD pundit-2 8.0-BETA2 FreeBSD 8.0-BETA2 #4: Fri Aug 7 12:54:04 IDT 2009 danny at sunfire:/r+d/obj/sunfire/home/src/head/sys/HUJI amd64


	
>Description:
	host is diskless, and mount /etc via unionfs to a mfs, and onboot:
lock order reversal:
 1st 0xffffff00029577f8 nfs (nfs) @ /home/src/head/sys/modules/unionfs/../../fs/unionfs/union_vnops.c:1821
 2nd 0xffffff0002956ba8 ufs (ufs) @ /home/src/head/sys/modules/unionfs/../../fs/unionfs/union_vnops.c:1843
 3rd 0xffffff0002d79098 nfs (nfs) @ /home/src/head/sys/nfsclient/nfs_node.c:161
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_checkorder() at witness_checkorder+0x81e
__lockmgr_args() at __lockmgr_args+0xcf3
nfs_nget() at nfs_nget+0x1c9
nfs_lookup() at nfs_lookup+0x4fa
VOP_LOOKUP_APV() at VOP_LOOKUP_APV+0x95
unionfs_lookup() at unionfs_lookup+0x586
vfs_cache_lookup() at vfs_cache_lookup+0xf0
VOP_LOOKUP_APV() at VOP_LOOKUP_APV+0x95
lookup() at lookup+0x37d
namei() at namei+0x479
kern_statat_vnhook() at kern_statat_vnhook+0x8f
kern_statat() at kern_statat+0x15
stat() at stat+0x2a
syscall() at syscall+0x1af
Xfast_syscall() at Xfast_syscall+0xe1
--- syscall (188, FreeBSD ELF64, stat), rip = 0x80072f41c, rsp = 0x7fffffffebb8, rbp = 0x8009173c0 ---
lock order reversal:
 1st 0xffffff0002d1fd80 unionfs (unionfs) @ /home/src/head/sys/modules/unionfs/../../fs/unionfs/union_subr.c:356
 2nd 0xffffff0002d79098 nfs (nfs) @ /home/src/head/sys/kern/vfs_subr.c:2188
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_checkorder() at witness_checkorder+0x81e
__lockmgr_args() at __lockmgr_args+0xcf3
vop_stdlock() at vop_stdlock+0x39
VOP_LOCK1_APV() at VOP_LOCK1_APV+0x9b
_vn_lock() at _vn_lock+0x47
vrele() at vrele+0x131
unionfs_noderem() at unionfs_noderem+0x1a4
unionfs_reclaim() at unionfs_reclaim+0x11
vgonel() at vgonel+0x105
vrecycle() at vrecycle+0x4c
unionfs_inactive() at unionfs_inactive+0x20
vinactive() at vinactive+0x72
vput() at vput+0x230
kern_statat_vnhook() at kern_statat_vnhook+0xfa
kern_statat() at kern_statat+0x15
stat() at stat+0x2a
syscall() at syscall+0x1af
Xfast_syscall() at Xfast_syscall+0xe1
--- syscall (188, FreeBSD ELF64, stat), rip = 0x80072f41c, rsp = 0x7fffffffebb8, rbp = 0x8009173c0 ---
lock order reversal:
 1st 0xffffff0002d1fd80 unionfs (unionfs) @ /home/src/head/sys/modules/unionfs/../../fs/unionfs/union_subr.c:356
 2nd 0xffffff0002d1fba8 ufs (ufs) @ /home/src/head/sys/kern/vfs_subr.c:2188
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
_witness_debugger() at _witness_debugger+0x2e
witness_checkorder() at witness_checkorder+0x81e
__lockmgr_args() at __lockmgr_args+0xcf3
ffs_lock() at ffs_lock+0x8c
VOP_LOCK1_APV() at VOP_LOCK1_APV+0x9b
_vn_lock() at _vn_lock+0x47
vrele() at vrele+0x131
unionfs_noderem() at unionfs_noderem+0x1c4
unionfs_reclaim() at unionfs_reclaim+0x11
vgonel() at vgonel+0x105
vrecycle() at vrecycle+0x4c
unionfs_inactive() at unionfs_inactive+0x20
vinactive() at vinactive+0x72
vput() at vput+0x230
kern_statat_vnhook() at kern_statat_vnhook+0xfa
kern_statat() at kern_statat+0x15
stat() at stat+0x2a
syscall() at syscall+0x1af
Xfast_syscall() at Xfast_syscall+0xe1
--- syscall (188, FreeBSD ELF64, stat), rip = 0x80072f41c, rsp = 0x7fffffffebb8, rbp = 0x8009173c0 ---

>How-To-Repeat:
	boot diskless host, in /etc/rc.initdiskless add:
	if [ -e /conf/union ]; then
    	   kldload unionfs
    	   mount_md 4096 /.etc
    	   mount_unionfs -o transparent /.etc /etc
	fi
fi

>Fix:

	


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list