Subject: CVS commit: syssrc/sys
To: None <source-changes@netbsd.org>
From: Konrad Schroder <perseant@netbsd.org>
List: source-changes
Date: 05/24/2002 02:05:27
Module Name:	syssrc
Committed By:	perseant
Date:		Thu May 23 23:05:27 UTC 2002

Modified Files:
	syssrc/sys/kern: vfs_subr.c
	syssrc/sys/ufs/lfs: lfs_segment.c lfs_subr.c

Log Message:
Back out rev 1.174 of vfs_subr.c, because the splbio() wasn't protecting
enough to be useful, and broadening it so that it did would have meant
that operations possibly requiring synchronous disk activity would have
to be done in splbio().  This clearly was not going to work.

Worked around this in the LFS case by having lfs_cluster_callback put an
extra hold on the vnode before calling biodone(), and taking the hold
off without HOLDRELE's problematic list swapping.  lfs_vunref() will take
care of that---in thread context---on the next write if need be.

Also, ensure that the list walking in lfs_{writevnodes,segunlock,gather}
takes into account the possibility that the list may change
underneath it (possibly because it itself deleted an element).

Tested on i386, test-compiled on alpha.


To generate a diff of this commit:
cvs rdiff -r1.174 -r1.175 syssrc/sys/kern/vfs_subr.c
cvs rdiff -r1.76 -r1.77 syssrc/sys/ufs/lfs/lfs_segment.c
cvs rdiff -r1.23 -r1.24 syssrc/sys/ufs/lfs/lfs_subr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.