From owner-svn-src-all@FreeBSD.ORG Fri Apr 3 09:44:49 2009 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 78E11106568F; Fri, 3 Apr 2009 09:44:49 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.terabit.net.ua (mail.terabit.net.ua [195.137.202.147]) by mx1.freebsd.org (Postfix) with ESMTP id B10B18FC0C; Fri, 3 Apr 2009 09:44:48 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from skuns.zoral.com.ua ([91.193.166.194] helo=mail.zoral.com.ua) by mail.terabit.net.ua with esmtps (TLSv1:AES256-SHA:256) (Exim 4.63 (FreeBSD)) (envelope-from ) id 1Lpfx6-0007VM-A8; Fri, 03 Apr 2009 12:44:44 +0300 Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id n339iWO5001033 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 3 Apr 2009 12:44:32 +0300 (EEST) (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.3/8.14.3) with ESMTP id n339iWmu026646; Fri, 3 Apr 2009 12:44:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.3/8.14.3/Submit) id n339iWkv026645; Fri, 3 Apr 2009 12:44:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Fri, 3 Apr 2009 12:44:32 +0300 From: Kostik Belousov To: Chagin Dmitry Message-ID: <20090403094432.GQ31897@deviant.kiev.zoral.com.ua> References: <200904022116.n32LGK81076210@svn.freebsd.org> <20090403060553.GA20624@dchagin.static.corbina.ru> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Sre54N+byDQwqJQI" Content-Disposition: inline In-Reply-To: <20090403060553.GA20624@dchagin.static.corbina.ru> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua X-Virus-Scanned: mail.terabit.net.ua 1Lpfx6-0007VM-A8 fbd6b7cbaa79e23861be7b12d3475b70 X-Terabit: YES Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Peter Wemm Subject: Re: svn commit: r190655 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Apr 2009 09:44:50 -0000 --Sre54N+byDQwqJQI Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Apr 03, 2009 at 10:05:53AM +0400, Chagin Dmitry wrote: > On Thu, Apr 02, 2009 at 09:16:20PM +0000, Peter Wemm wrote: > > Author: peter > > Date: Thu Apr 2 21:16:20 2009 > > New Revision: 190655 > > URL: http://svn.freebsd.org/changeset/base/190655 > >=20 > > Log: > > vn_vptocnp() unlocks the name cache and forgets to re-lock it before > > returning in one error case, and mistakenly unlocks it for the > > umount -f case. > >=20 >=20 > vn_vptocnp() consumers expects what in case of error returns > w/o CACHE_RLOCK held. so you need something like: Yeah, I do not quite understand this commit. >=20 > diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c > index ea19e13..b06a6c6 100644 > --- a/sys/kern/vfs_cache.c > +++ b/sys/kern/vfs_cache.c > @@ -971,18 +971,17 @@ vn_vptocnp(struct vnode **vp, char **bp, char *buf,= u_int *buflen) > vdrop(*vp); > VFS_UNLOCK_GIANT(vfslocked); > if (error) { > - CACHE_RLOCK(); > numfullpathfail2++; > return (error); > } Yes, this is reversal of the part of the r190655. > *bp =3D buf + *buflen; > *vp =3D dvp; > - CACHE_RLOCK(); > if ((*vp)->v_iflag & VI_DOOMED) { > /* forced unmount */ > vdrop(*vp); > return (ENOENT); > } > + CACHE_RLOCK(); > vdrop(*vp); > =20 > return (0); There, r190655 should be reversed too, instead of doing what you do. VI_DOOMED should be checked while cache is locked. >=20 >=20 > --=20 > Have fun! > chd --Sre54N+byDQwqJQI Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEARECAAYFAknV2n8ACgkQC3+MBN1Mb4j/uwCeJPnFltpXjO5nwD1Ns2pWohH8 6ecAn2TOIAjWpX3nxGbyBgG3VURjYsJa =g/aR -----END PGP SIGNATURE----- --Sre54N+byDQwqJQI--