From owner-freebsd-hackers Wed Oct 11 12:57:52 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id MAA16114 for hackers-outgoing; Wed, 11 Oct 1995 12:57:52 -0700 Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.211]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id MAA16096 ; Wed, 11 Oct 1995 12:57:46 -0700 Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id MAA13673; Wed, 11 Oct 1995 12:53:55 -0700 From: Terry Lambert Message-Id: <199510111953.MAA13673@phaeton.artisoft.com> Subject: Re: FS LAYERING PATCHES AGAINST CURRENT UPLOADED To: dave@elxr.jpl.nasa.gov (Dave Hayes) Date: Wed, 11 Oct 1995 12:53:55 -0700 (MST) Cc: terry@lambert.org, hackers@FreeBSD.ORG, current@FreeBSD.ORG In-Reply-To: <199510111919.MAA02797@elxr.jpl.nasa.gov> from "Dave Hayes" at Oct 11, 95 12:19:00 pm X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 2471 Sender: owner-hackers@FreeBSD.ORG Precedence: bulk > >I have uploaded the FS layering patches I promised last week. > > Are these patches that allow one to glom disk partitions onto > another (like ccd in NetBSD) to make a meta-partition? No. These are the patches that fix the cn_pnbuf implied deallocation in every file system instance. They also cause the vnode_if. and vnode_if.h (machine generated files) to count the defined VOP descriptors by sizeof() aritmatic instead of having to have an FS defined in vfs_init.c. They also fix the double deallocation problems that could occur from PCNFS clients and in some extreme error cases. The following patch was inadvertently left out (thanks Paul!) when -current went from a straight queue to a circular queue. If you apply the patches, make sure you apply this one as well: ============================================================================== *** vfs_syscalls.c.bad Wed Oct 11 11:05:04 1995 --- vfs_syscalls.c Wed Oct 11 11:34:51 1995 *************** *** 500,507 **** */ if (((uap->flags & MNT_NOWAIT) == 0 || (uap->flags & MNT_WAIT)) && ! (error = VFS_STATFS(mp, sp, p))) continue; sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; if( error = copyout((caddr_t)sp, sfsp, sizeof(*sp))) { break; /* error, mp != NULL*/ --- 500,509 ---- */ if (((uap->flags & MNT_NOWAIT) == 0 || (uap->flags & MNT_WAIT)) && ! (error = VFS_STATFS(mp, sp, p))) { ! error = 0; continue; + } sp->f_flags = mp->mnt_flag & MNT_VISFLAGMASK; if( error = copyout((caddr_t)sp, sfsp, sizeof(*sp))) { break; /* error, mp != NULL*/ *************** *** 512,518 **** } /* only if loop above completed successfully*/ ! if( mp == NULL) { if (sfsp && count > maxcount) *retval = maxcount; else --- 514,520 ---- } /* only if loop above completed successfully*/ ! if( mp == (void *)&mountlist) { if (sfsp && count > maxcount) *retval = maxcount; else ============================================================================== Paul has also seen a dual free panic when compiled with DIAGNOSTIC set. He hasn't reported what was going on at the time (I suspect either NFS or a file system LKM that wasn't rebuilt or a non-standard file system from outside of -current, like John Dyson's ext2fs). Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.