Date: Wed, 11 Oct 1995 12:53:55 -0700 (MST) From: Terry Lambert <terry@lambert.org> To: dave@elxr.jpl.nasa.gov (Dave Hayes) Cc: terry@lambert.org, hackers@FreeBSD.ORG, current@FreeBSD.ORG Subject: Re: FS LAYERING PATCHES AGAINST CURRENT UPLOADED Message-ID: <199510111953.MAA13673@phaeton.artisoft.com> In-Reply-To: <199510111919.MAA02797@elxr.jpl.nasa.gov> from "Dave Hayes" at Oct 11, 95 12:19:00 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> >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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510111953.MAA13673>