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>
