From owner-cvs-all@FreeBSD.ORG Thu May 1 00:01:43 2003 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5F0E237B401; Thu, 1 May 2003 00:01:43 -0700 (PDT) Received: from smtp02.syd.iprimus.net.au (smtp02.syd.iprimus.net.au [210.50.76.52]) by mx1.FreeBSD.org (Postfix) with ESMTP id C56F443F93; Thu, 1 May 2003 00:01:42 -0700 (PDT) (envelope-from tim@robbins.dropbear.id.au) Received: from dilbert.robbins.dropbear.id.au (210.50.248.12) by smtp02.syd.iprimus.net.au (7.0.012) id 3E8A160000542C4E; Thu, 1 May 2003 17:01:41 +1000 Received: by dilbert.robbins.dropbear.id.au (Postfix, from userid 1000) id 32025B4CD; Thu, 1 May 2003 17:01:33 +1000 (EST) Date: Thu, 1 May 2003 17:01:33 +1000 From: Tim Robbins To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Message-ID: <20030501170133.A35409@dilbert.robbins.dropbear.id.au> References: <200305010642.h416g0sr018829@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <200305010642.h416g0sr018829@repoman.freebsd.org>; from tjr@FreeBSD.org on Wed, Apr 30, 2003 at 11:42:00PM -0700 Subject: Re: cvs commit: src/sys/ufs/ffs ffs_vfsops.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 May 2003 07:01:43 -0000 On Wed, Apr 30, 2003 at 11:42:00PM -0700, Tim J. Robbins wrote: > tjr 2003/04/30 23:42:00 PDT > > FreeBSD src repository > > Modified files: > sys/ufs/ffs ffs_vfsops.c > Log: > Do not attempt to free NULL dinodes (i_din1 or i_din2) in ffs_ifree(). > These fields can be left as NULL if ffs_vget() allocates an inode but > fails before the dinode memory has been allocated. There are two cases > when this can occur: when we lose a race and another process has added > the inode to the hash, and when reading the inode off disk fails. > > The bug was observed by Kris on one of the package-building machines. > See http://marc.theaimsgroup.com/?l=freebsd-current&m=105172731013411&w=2 > In Kris's case, it was the bread() that failed because of a disk error. > > The alternative to this patch is to ensure that ffs_vget() does not call > vput() when the inode that hasn't been properly initialised. Just BTW, if any of the UFS maintainers want to back this out and solve the problem a different way, they're welcome to do that. Tim