From owner-freebsd-current@FreeBSD.ORG Thu Feb 7 04:50:22 2008 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 64ED516A46D; Thu, 7 Feb 2008 04:50:22 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from relay02.kiev.sovam.com (relay02.kiev.sovam.com [62.64.120.197]) by mx1.freebsd.org (Postfix) with ESMTP id E122213C448; Thu, 7 Feb 2008 04:50:21 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from [212.82.216.226] (helo=skuns.kiev.zoral.com.ua) by relay02.kiev.sovam.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.67) (envelope-from ) id 1JMyiK-0006mV-4K; Thu, 07 Feb 2008 06:50:20 +0200 Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by skuns.kiev.zoral.com.ua (8.14.1/8.14.1) with ESMTP id m174nuEB034571 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 7 Feb 2008 06:49:56 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.2/8.14.2) with ESMTP id m174oGUe074978; Thu, 7 Feb 2008 06:50:16 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.2/8.14.2/Submit) id m174oFv0074977; Thu, 7 Feb 2008 06:50:15 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 7 Feb 2008 06:50:15 +0200 From: Kostik Belousov To: Marcel Moolenaar Message-ID: <20080207045015.GW57756@deviant.kiev.zoral.com.ua> References: Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="ShN5JDX6sUQ6hdRy" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Scanner-Signature: 6dc4245230f22f3abb357b69a6da667e X-DrWeb-checked: yes X-SpamTest-Envelope-From: kostikbel@gmail.com X-SpamTest-Group-ID: 00000000 X-SpamTest-Info: Profiles 2188 [Feb 06 2008] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {received from trusted relay: not dialup} X-SpamTest-Method: none X-SpamTest-Method: Local Lists X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release Cc: Attilio Rao , current@freebsd.org Subject: Re: Old LOR between devfs & devfsmount resurfacing? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Feb 2008 04:50:22 -0000 --ShN5JDX6sUQ6hdRy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Feb 06, 2008 at 11:11:06AM -0800, Marcel Moolenaar wrote: > All, >=20 > I just ran into the following LOR after upgrading my PowerPC box: >=20 > lock order reversal: > 1st 0xdbee94 devfs (devfs) @ /nfs/freebsd/8.x/src/sys/kern/=20 > vfs_subr.c:2061 > 2nd 0xdfb014 devfsmount (devfsmount) @ /nfs/freebsd/8.x/src/sys/fs/=20 > devfs/devfs_vnops.c:201 > KDB: stack backtrace: > 0xdc0febc8: at kdb_backtrace+0x4c > 0xdc0febd8: at witness_checkorder+0x704 > 0xdc0fec28: at _sx_xlock+0x8c > 0xdc0fec48: at devfs_allocv+0x138 > 0xdc0fec88: at devfs_root+0x5c > 0xdc0fecb8: at set_rootvnode+0x44 > 0xdc0fece8: at vfs_mountroot+0x344 > 0xdc0fed48: at start_init+0x88 > 0xdc0feda8: at fork_exit+0xb4 > 0xdc0fedc8: at fork_trampoline+0xc > KDB: enter: witness_checkorder > [thread pid 1 tid 100001 ] > Stopped at 0x28ee68: addi r0, r0, 0x0 >=20 > It seems that this is a LOR reported in 2006 and fixed > in 2006 as well. Do other people see this too, or should > I suspect my sources? I believe this is a false positive, caused by the way the witness works. Attilio recently added the witness support for the lockmgr, that caused this and at least two more LORs to be printed on startup. Correct lock order is devfs vnode -> devfs mount sx lock. When allocating new devfs vnode, see devfs_allocv(), the newly created vnode is locked while devfs mount lock already held (see line 250 of fs/devfs/devfs_vnops.c). Nonetheless, this cannot cause deadlock since no other thread can find the new vnode, and thus perform the other lock order for this vnode lock. The fix is to shut the witness in this particular case. Attilio, how to do this ? --ShN5JDX6sUQ6hdRy Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAkeqjgcACgkQC3+MBN1Mb4gpzgCeNns/OD2aFU3vKfpAXD6bYcvt uO0AoLWOxK2cCXTl8PUK25xQPCXl4U8w =m+7y -----END PGP SIGNATURE----- --ShN5JDX6sUQ6hdRy--