freebsd-dev/sys
Ian Dowse 0864ef1e8a Change the second argument of vflush() to an integer that specifies
the number of references on the filesystem root vnode to be both
expected and released. Many filesystems hold an extra reference on
the filesystem root vnode, which must be accounted for when
determining if the filesystem is busy and then released if it isn't
busy. The old `skipvp' approach required individual filesystem
xxx_unmount functions to re-implement much of vflush()'s logic to
deal with the root vnode.

All 9 filesystems that hold an extra reference on the root vnode
got the logic wrong in the case of forced unmounts, so `umount -f'
would always fail if there were any extra root vnode references.
Fix this issue centrally in vflush(), now that we can.

This commit also fixes a vnode reference leak in devfs, which could
result in idle devfs filesystems that refuse to unmount.

Reviewed by:	phk, bp
2001-05-16 18:04:37 +00:00
..
alpha Lock the procfs functions for doing a single step and reading/writing 2001-05-16 00:47:27 +00:00
amd64 Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
arm/include Correct disordering which is corresponding to bde's fix to 2001-02-17 14:51:11 +00:00
boot FICL 2.05 has a flawed definition of BASE. Fix it. 2001-05-10 05:13:09 +00:00
cam Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
coda Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
compat Avoid overflow when converting ticks to jiffies. 2001-05-09 11:41:54 +00:00
compile
conf Separate out isa attachment to its own file. The pci attachment will 2001-05-16 07:32:04 +00:00
contrib/dev Actually biofinish(struct bio *, struct devstat *, int error) is more general 2001-05-06 20:00:03 +00:00
crypto Kernel crypto need binary key material, not symbolic ascii. 2001-03-10 13:02:58 +00:00
ddb Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
dev Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
fs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
geom Polish error handling with biofinish(). 2001-05-08 09:10:27 +00:00
gnu Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
i4b pseudo-device -> device in kernel config. 2001-05-01 11:26:14 +00:00
i386 Lock the procfs functions for doing a single step and reading/writing 2001-05-16 00:47:27 +00:00
ia64 Lock the procfs functions for doing a single step and reading/writing 2001-05-16 00:47:27 +00:00
isa Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
isofs/cd9660 Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
kern Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
libkern Add function prototypes and base module for kernel side iconv library. 2001-04-09 09:39:29 +00:00
miscfs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
modules Catch up with some recent changes: 2001-05-16 07:35:54 +00:00
msdosfs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
net Get IP multicast working on VLAN devices: 2001-05-02 16:12:58 +00:00
netatalk Mechanical change to use <sys/queue.h> macro API instead of 2001-02-04 13:13:25 +00:00
netatm Silence some warnings 2001-03-20 10:42:49 +00:00
netgraph Remove unneeded includes in the i386 case. 2001-05-15 23:16:18 +00:00
netinet In in_ifadown(), differentiate between whether the interface goes 2001-05-11 14:37:34 +00:00
netinet6 Fix typo in previous commit. 2001-04-20 08:43:20 +00:00
netipx Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
netkey Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
netnatm Change a couple of M_WAITOKs used in M_PREPEND() to M_TRYWAITs, which 2001-04-05 04:20:48 +00:00
netncp Include sys/lock.h and sys/mutex.h so that this compiles. 2001-05-15 22:02:46 +00:00
netns * Rename M_WAIT mbuf subsystem flag to M_TRYWAIT. 2000-12-21 21:44:31 +00:00
netsmb Back out scanning file descriptors with holding a process lock. 2001-05-15 10:19:57 +00:00
nfs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
nfsclient Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
nfsserver Undo part of the tangle of having sys/lock.h and sys/mutex.h included in 2001-05-01 08:13:21 +00:00
ntfs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
nwfs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
pc98 Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
pccard Separate out isa attachment to its own file. The pci attachment will 2001-05-16 07:32:04 +00:00
pci Close PR 22208: bring chip out of suspend mode, because Windows might 2001-05-14 19:13:02 +00:00
posix4 o First step in cleaning up authorization code for the posix4 2001-05-06 16:15:42 +00:00
powerpc Lock the procfs functions for doing a single step and reading/writing 2001-05-16 00:47:27 +00:00
rpc Bring in a hybrid of SunSoft's transport-independent RPC (TI-RPC) and 2001-03-19 12:50:13 +00:00
svr4 This patchset fixes a large number of file descriptor race conditions. 2000-11-18 21:01:04 +00:00
sys Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
tools replace calls to non-existant bail() subroutine with calls to 2001-03-23 11:48:50 +00:00
ufs Change the second argument of vflush() to an integer that specifies 2001-05-16 18:04:37 +00:00
vm - Use PROC_LOCK_ASSERT instead of a direct mtx_assert. 2001-05-15 22:20:44 +00:00
Makefile