Subject: CVS commit: src/sys/fs/puffs
To: None <source-changes@NetBSD.org>
From: Antti Kantee <pooka@netbsd.org>
List: source-changes
Date: 11/14/2006 19:36:50
Module Name: src
Committed By: pooka
Date: Tue Nov 14 19:36:50 UTC 2006
Modified Files:
src/sys/fs/puffs: puffs_msgif.c
Log Message:
Fix a race condition with unmount where the mountpoint might disappear
from under us while waiting for syncer_lock and before we got to vfs_busy.
This happens easily e.g. when the userspace server loses its will to
live in VOP_RECLAIM, which is called from vflush() in VFS_UNMOUNT. We
get two competing unmounters. When the first one finishes, it releases
syncer_lock. Now the second one tries to vfs_busy(), but is greeted
with garbage in *mp.
XXX: Technically this is a more general issue and should be fixed
elsewhere, but it's hard to trigger it with normal file systems
unless they are unmounted "simultaneously" twice and are dirty
enough for flushing to take a while. So make a note about it in
the little black book next to the poems and postpone the crusade
for now.
To generate a diff of this commit:
cvs rdiff -r1.5 -r1.6 src/sys/fs/puffs/puffs_msgif.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.