From nobody@FreeBSD.org  Mon Jul 20 21:20:43 2009
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id BB0AE1065673
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 20 Jul 2009 21:20:43 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id A9D168FC1B
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 20 Jul 2009 21:20:43 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n6KLKhkw086257
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 20 Jul 2009 21:20:43 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id n6KLKhG2086256;
	Mon, 20 Jul 2009 21:20:43 GMT
	(envelope-from nobody)
Message-Id: <200907202120.n6KLKhG2086256@www.freebsd.org>
Date: Mon, 20 Jul 2009 21:20:43 GMT
From: Rene Ladan <rene@FreeBSD.org>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [lor] bufwait/snaplk (fsync)
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         136944
>Category:       kern
>Synopsis:       [ffs] [lor] bufwait/snaplk (fsync)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-fs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jul 20 21:30:05 UTC 2009
>Closed-Date:    
>Last-Modified:  Fri Feb 11 10:50:10 UTC 2011
>Originator:     Rene Ladan
>Release:        8.0-BETA2 amd64
>Organization:
>Environment:
FreeBSD self.rene-ladan.nl 8.0-BETA2 FreeBSD 8.0-BETA2 #0: Wed Jul 15 21:48:41 UTC 2009     root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64

>Description:
lock order reversal: 
 1st 0xffffff8029490410 bufwait (bufwait) @ /usr/src/sys/kern/vfs_bio.c:2558
 2nd 0xffffff0078f4a130 snaplk (snaplk) @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:2223
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_copyonwrite() at ffs_copyonwrite+0x189
ffs_geom_strategy() at ffs_geom_strategy+0x1b5
bufwrite() at bufwrite+0x106
ffs_update() at ffs_update+0x1bd
ffs_fsync() at ffs_fsync+0x43
fsync() at fsync+0x148
syscall() at syscall+0x1af
Xfast_syscall() at Xfast_syscall+0xe1
--- syscall (95, FreeBSD ELF64, fsync), rip = 0x80084cd0c, rsp = 0x7fffffffdcb8, rbp = 0x1 ---

>How-To-Repeat:
GENERIC kernel, only devfs and UFS2 filesystems mounted via /dev/ad* (/ , /var, /tmp, /usr)
>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-fs 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Sat Jul 25 01:28:12 UTC 2009 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=136944 

From: Olivier Certner <olivier.freebsd@free.fr>
To: bug-followup@freebsd.org
Cc:  
Subject: kern/136944: [ffs] [lor] bufwait/snaplk (fsync)
Date: Mon, 24 Jan 2011 16:07:54 +0100

 		Hi,
 
 	A small mail to confirm that this problem is still present on 
 9.0-CURRENT-201101. Also, I reproduce other related LORs below.
 
 	They can be triggered by performing a 'dump -L' on a UFS file system. 
 The '-L' flag of 'dump' causes it to perform a snapshot of the file system to 
 dump before reading data from it.
 
 lock order reversal:
  1st 0xfffffe0019815bd8 ufs (ufs) @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:423
  2nd 0xffffff80f5db1f98 bufwait (bufwait) @ /usr/src/sys/kern/vfs_bio.c:2659
  3rd 0xfffffe0003bc2db8 ufs (ufs) @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:544
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 kdb_backtrace() at kdb_backtrace+0x37
 _witness_debugger() at _witness_debugger+0x2e
 witness_checkorder() at witness_checkorder+0x807
 __lockmgr_args() at __lockmgr_args+0xd42
 ffs_lock() at ffs_lock+0x8c
 VOP_LOCK1_APV() at VOP_LOCK1_APV+0x9b
 _vn_lock() at _vn_lock+0x47
 ffs_snapshot() at ffs_snapshot+0x1c16
 ffs_mount() at ffs_mount+0x5eb
 vfs_donmount() at vfs_donmount+0xf6b
 nmount() at nmount+0x63
 syscallenter() at syscallenter+0x1aa
 syscall() at syscall+0x4c
 Xfast_syscall() at Xfast_syscall+0xe2
 --- syscall (378, FreeBSD ELF64, nmount), rip = 0x8006a015c, rsp = 
 0x7fffffffe3a8, rbp = 0x7fffffffedeb ---
 
 lock order reversal:
  1st 0xffffff80f5c6af78 bufwait (bufwait) @ /usr/src/sys/kern/vfs_bio.c:2659
  2nd 0xfffffe0003c37d30 snaplk (snaplk) 
 @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:2261
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 kdb_backtrace() at kdb_backtrace+0x37
 _witness_debugger() at _witness_debugger+0x2e
 witness_checkorder() at witness_checkorder+0x807
 __lockmgr_args() at __lockmgr_args+0xd42
 ffs_copyonwrite() at ffs_copyonwrite+0x189
 ffs_geom_strategy() at ffs_geom_strategy+0x1ba
 bufwrite() at bufwrite+0x10c
 ffs_update() at ffs_update+0x1a3
 ffs_fsync() at ffs_fsync+0x43
 fsync() at fsync+0x148
 syscallenter() at syscallenter+0x1aa
 syscall() at syscall+0x4c
 Xfast_syscall() at Xfast_syscall+0xe2
 --- syscall (95, FreeBSD ELF64, fsync), rip = 0x800856d5c, rsp = 
 0x7fffffffe128, rbp = 0x800c8c0d0 ---
 
 lock order reversal:
  1st 0xfffffe0003c37d30 snaplk (snaplk) @ /usr/src/sys/kern/vfs_vnops.c:301
  2nd 0xfffffe0019815bd8 ufs (ufs) @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:1616
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 kdb_backtrace() at kdb_backtrace+0x37
 _witness_debugger() at _witness_debugger+0x2e
 witness_checkorder() at witness_checkorder+0x807
 __lockmgr_args() at __lockmgr_args+0xd42
 ffs_snapremove() at ffs_snapremove+0xe7
 ffs_truncate() at ffs_truncate+0x635
 ufs_inactive() at ufs_inactive+0x243
 vinactive() at vinactive+0x72
 vputx() at vputx+0x386
 vn_close() at vn_close+0x118
 vn_closefile() at vn_closefile+0x5a
 _fdrop() at _fdrop+0x23
 closef() at closef+0x5b
 fdfree() at fdfree+0x1b4
 exit1() at exit1+0x2f5
 sys_exit() at sys_exit+0xe
 syscallenter() at syscallenter+0x1aa
 syscall() at syscall+0x4c
 Xfast_syscall() at Xfast_syscall+0xe2
 --- syscall (1, FreeBSD ELF64, sys_exit), rip = 0x8006f18cc, rsp = 
 0x7fffffffe1b8, rbp = 0x404ed0 ---
 
 	Thanks,
 
 		Olivier Certner

From: Robert Schulze <rs@bytecamp.net>
To: rene@freebsd.org
Cc: bug-followup@freebsd.org
Subject: Re: kern/136944: [ffs] [lor] bufwait/snaplk (fsync)
Date: Fri, 11 Feb 2011 11:18:46 +0100

 Hi,
 
 I can confirm that, too:
 
 lock order reversal:
   1st 0xffffff0019291cc8 ufs (ufs) @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:423
   2nd 0xffffff81ef169978 bufwait (bufwait) @ 
 /usr/src/sys/kern/vfs_bio.c:2636
   3rd 0xffffff00074647e8 ufs (ufs) @ /usr/src/sys/ufs/ffs/ffs_snapshot.c:544
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 kdb_backtrace() at kdb_backtrace+0x37
 _witness_debugger() at _witness_debugger+0x49
 witness_checkorder() at witness_checkorder+0x7d3
 __lockmgr_args() at __lockmgr_args+0xd0b
 ffs_lock() at ffs_lock+0xac
 VOP_LOCK1_APV() at VOP_LOCK1_APV+0x9b
 _vn_lock() at _vn_lock+0x5d
 ffs_snapshot() at ffs_snapshot+0x1b79
 ffs_mount() at ffs_mount+0x5c5
 vfs_donmount() at vfs_donmount+0xcd4
 nmount() at nmount+0x74
 syscallenter() at syscallenter+0xe5
 syscall() at syscall+0x55
 Xfast_syscall() at Xfast_syscall+0xe2
 --- syscall (378, FreeBSD ELF64, nmount), rip = 0x8007acfdc, rsp = 
 0x7fffffffe9a8, rbp = 0x800a04530 ---
 lock order reversal:
   1st 0xffffff81ef06e6f8 bufwait (bufwait) @ 
 /usr/src/sys/kern/vfs_bio.c:2636
   2nd 0xffffff0015bcc630 snaplk (snaplk) @ 
 /usr/src/sys/ufs/ffs/ffs_snapshot.c:2223
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 kdb_backtrace() at kdb_backtrace+0x37
 _witness_debugger() at _witness_debugger+0x49
 witness_checkorder() at witness_checkorder+0x7d3
 __lockmgr_args() at __lockmgr_args+0xd0b
 ffs_copyonwrite() at ffs_copyonwrite+0x161
 ffs_geom_strategy() at ffs_geom_strategy+0x159
 bufwrite() at bufwrite+0xff
 ffs_sbupdate() at ffs_sbupdate+0x94
 ffs_sync() at ffs_sync+0x489
 sync_fsync() at sync_fsync+0x136
 VOP_FSYNC_APV() at VOP_FSYNC_APV+0xb5
 sync_vnode() at sync_vnode+0x143
 sched_sync() at sched_sync+0x1c6
 fork_exit() at fork_exit+0x12a
 fork_trampoline() at fork_trampoline+0xe
 --- trap 0, rip = 0, rsp = 0xffffff8245289cf0, rbp = 0 ---
 lock order reversal:
   1st 0xffffff0015bcc630 snaplk (snaplk) @ /usr/src/sys/kern/vfs_vnops.c:296
   2nd 0xffffff0019291cc8 ufs (ufs) @ 
 /usr/src/sys/ufs/ffs/ffs_snapshot.c:1587
 KDB: stack backtrace:
 db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
 kdb_backtrace() at kdb_backtrace+0x37
 _witness_debugger() at _witness_debugger+0x49
 witness_checkorder() at witness_checkorder+0x7d3
 __lockmgr_args() at __lockmgr_args+0xd0b
 ffs_snapremove() at ffs_snapremove+0xe2
 softdep_releasefile() at softdep_releasefile+0x133
 ufs_inactive() at ufs_inactive+0x153
 VOP_INACTIVE_APV() at VOP_INACTIVE_APV+0xb9
 vinactive() at vinactive+0x89
 vputx() at vputx+0x3c6
 vn_close() at vn_close+0x10b
 vn_closefile() at vn_closefile+0x51
 _fdrop() at _fdrop+0x20
 closef() at closef+0x58
 kern_close() at kern_close+0xff
 syscallenter() at syscallenter+0xe5
 syscall() at syscall+0x55
 Xfast_syscall() at Xfast_syscall+0xe2
 --- syscall (6, FreeBSD ELF64, close), rip = 0x800844b1c, rsp = 
 0x7fffffffe9a8, rbp = 0 ---
 
 this was after hot-resetting, maybe due to a background fsck.
 
 with kind regards,
 Robert Schulze
>Unformatted:
