From owner-freebsd-fs@FreeBSD.ORG Sat May 17 19:22:39 2014 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BB4CC528; Sat, 17 May 2014 19:22:39 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5B2692FE4; Sat, 17 May 2014 19:22:39 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.8/8.14.8) with ESMTP id s4HJMU2P006987; Sat, 17 May 2014 22:22:30 +0300 (EEST) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua s4HJMU2P006987 Received: (from kostik@localhost) by tom.home (8.14.8/8.14.8/Submit) id s4HJMT5P006986; Sat, 17 May 2014 22:22:29 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Sat, 17 May 2014 22:22:29 +0300 From: Konstantin Belousov To: Benjamin Kaduk Subject: Re: Add an assert that v_holdcnt >= v_usecount? Message-ID: <20140517192229.GA74331@kib.kiev.ua> References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="o8B5w8807wLEcI70" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on tom.home Cc: freebsd-fs@freebsd.org X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 May 2014 19:22:39 -0000 --o8B5w8807wLEcI70 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, May 17, 2014 at 01:48:11PM -0400, Benjamin Kaduk wrote: > jhb was helping me debug a crashy openafs build in one of my VMs, and the= =20 > symptoms seemed to indicate that a vnode had been partially destroyed=20 > before vgone() was called from vflush(), as if some buggy filesystem code= =20 > had called vdrop() instead of vrele() or something similar. In a quick= =20 > check, it didn't look like we had any assertions that would catch such=20 > bugs, so I tried adding something like this: >=20 > Index: sys/kern/vfs_subr.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- sys/kern/vfs_subr.c (revision 266330) > +++ sys/kern/vfs_subr.c (working copy) > @@ -2343,6 +2343,8 @@ > if (vp->v_holdcnt <=3D 0) > panic("vdrop: holdcnt %d", vp->v_holdcnt); > vp->v_holdcnt--; > + VNASSERT(vp->v_holdcnt >=3D vp->v_usecount, vp, > + ("hold count less than use count")); > if (vp->v_holdcnt > 0) { > VI_UNLOCK(vp); > return; >=20 > Does that seem like something that would be generally useful? This is reasonable. As a note, I never seen such corruption of the otherwise valid vnode state= =20 ever. There were a lot of leaks, but never mismatched vget/vdrop. --o8B5w8807wLEcI70 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQIcBAEBAgAGBQJTd7b1AAoJEJDCuSvBvK1B9C8P/jawSVLbXjzWqD5rjdUCoJ+k 3XaEe4uokIf9yOxbZ2sAlq9rDQahgL8xABCfHfY/FSCMOfWmmyx10Kb/CFZfpajV cqpzxPNj9oshdxKcYYqrbSji//vZBovby1/RIfzcvXkCKnBGv09oJts56jw0ZORv QjEdDj12vbtDfyhzffPl68vYBg4TFQDzmSOuhg2cf8iCJcdsN8+XEdG3Ln6OMGsf NOLePIJy3b+ioJocakthzVj+ITnpEYp258U5WeZSd2wdbDSZ0wIxEt6r1pt4Mhua RdUCr8QFOST5vm1lAPk7x8KByOyrCk1tOibSnnKJn2z2oO1OOw9ngURI1PwVDf+l 3YCjGJhA0yXbBFC4Se82kD0NqXmR9sX+z7MuAu+FXnHGnjknPb/xpZ+O37R5dk6Y g6C1ZvwmDguOtK7VjpixD+jl+YjhMKEUJzAFwy5FYq8WEMA/x2qClK+/4R8sg4xD PLi57oSdDABCEZhVmThDIbf5BlfAox1WcONCEIrs7cS++SiGBzmN+gl+j0YjCDns dNCkKAoKtOsYPfSK/yIeMdxuWsLMqODsSI8mZeiK4pE2SDNCCkntSxoMmXZfhvbR AEY+RRYoPUuPhC/Wie2IR44k8Pg8GMrrKT5xaUlmj/GjhOFnW4OG8nASE+wR2OCk P0B2by5Ntez80E/7GOBg =N3p7 -----END PGP SIGNATURE----- --o8B5w8807wLEcI70--