Subject: CVS commit: syssrc
To: None <source-changes@netbsd.org>
From: Frank van der Linden <fvdl@netbsd.org>
List: source-changes
Date: 10/21/1999 12:21:32
Module Name:	syssrc
Committed By:	fvdl
Date:		Thu Oct 21 19:21:32 UTC 1999

Modified Files:
	syssrc/sys/kern [fvdl-softdep]: vfs_subr.c vfs_syscalls.c
	syssrc/sys/sys [fvdl-softdep]: mount.h
	syssrc/sys/ufs/ffs [fvdl-softdep]: ffs_softdep.c

Log Message:
Add workaround hacks to enable the softdep code to call getnewvnode()
when a filesystem is being unmounted. The problem is that the softdep
code stored inode numbers in the worklist structures, and does not
use vnodes. So VFS_VGET must be used to get a vnode during the final
flush stages, and this can call getnewvnode(), resulting in
a vfs_busy() + MNT_UNMOUNT hang.

I've tried to make the softdep code use vnodes, but that's a pain,
since it gets called at points were vnode ops are dangerous (i.e.
interrupt context, and uncertainty whether a vnode is locked, etc).

This is all icky stuff, but it does get things much closer to a
working state..


To generate a diff of this commit:
cvs rdiff -r1.112.4.1 -r1.112.4.2 syssrc/sys/kern/vfs_subr.c
cvs rdiff -r1.147.4.1 -r1.147.4.2 syssrc/sys/kern/vfs_syscalls.c
cvs rdiff -r1.77.4.1 -r1.77.4.2 syssrc/sys/sys/mount.h
cvs rdiff -r1.1.2.3 -r1.1.2.4 syssrc/sys/ufs/ffs/ffs_softdep.c

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