freebsd-dev/sys
Ian Dowse 6a1b2a22ef Add a new vnode flag VI_DOINGINACT to indicate that a VOP_INACTIVE
call is in progress on the vnode. When vput() or vrele() sees a
1->0 reference count transition, it now return without any further
action if this flag is set. This flag is necessary to avoid recursion
into VOP_INACTIVE if the filesystem inactive routine causes the
reference count to increase and then drop back to zero. It is also
used to guarantee that an unlocked vnode will not be recycled while
blocked in VOP_INACTIVE().

There are at least two cases where the recursion can occur: one is
that the softupdates code called by ufs_inactive() via ffs_truncate()
can call vput() on the vnode. This has been reported by many people
as "lockmgr: draining against myself" panics. The other case is
that nfs_inactive() can call vget() and then vrele() on the vnode
to clean up a sillyrename file.

Reviewed by:	mckusick (an older version of the patch)
2002-12-29 18:30:49 +00:00
..
alpha - Use VM_ALLOC_WIRED. 2002-12-28 22:47:45 +00:00
amd64 Add the if_bge driver. I can't find any reason why it's not here, and it's 2002-12-28 06:22:17 +00:00
arm MB_LEN_MAX is not MD, move it to the MI limits.h. 2002-12-22 06:38:45 +00:00
boot -mno-align-long-strings can make things smaller, so lets use it in hopes 2002-12-21 02:03:31 +00:00
cam Quirk for Memorybird pen drive 2002-12-18 21:47:52 +00:00
coda Back our kernel support for reliable signal queues. 2002-10-01 17:15:53 +00:00
compat SMP locking for ifnet list. 2002-12-22 05:35:03 +00:00
conf Move the amd(4) driver to it's own directory in preparation for it growing 2002-12-13 22:59:18 +00:00
contrib SMP locking for ifnet list. 2002-12-22 05:35:03 +00:00
crypto Make this compilable from userland as well. 2002-11-01 08:56:39 +00:00
ddb Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
dev Remove calls to cdevsw_add(), they are dreprecated on this branch now. 2002-12-28 21:39:04 +00:00
fs There is some sort of race/deadlock which I have not identified 2002-12-29 10:32:16 +00:00
geom Implement ioctls for tampering with sector0. 2002-12-29 14:59:24 +00:00
gnu MFufs 1.33: 2002-10-18 21:41:41 +00:00
i4b network interface and link layer changes: 2002-11-15 00:00:15 +00:00
i386 Add the if_bge driver. I can't find any reason why it's not here, and it's 2002-12-28 06:22:17 +00:00
ia64 MB_LEN_MAX is not MD, move it to the MI limits.h. 2002-12-22 06:38:45 +00:00
isa Remove calls to cdevsw_add(), they are dreprecated on this branch now. 2002-12-28 21:39:04 +00:00
isofs/cd9660 Unbreak MNT_UPDATE when running with cd as root. Detect mountroot by 2002-11-02 20:16:55 +00:00
kern Add a new vnode flag VI_DOINGINACT to indicate that a VOP_INACTIVE 2002-12-29 18:30:49 +00:00
libkern Fix instances of macros with improperly parenthasized arguments. 2002-11-09 12:55:07 +00:00
modules Make it work -current style. 2002-12-23 22:33:08 +00:00
net Remove cdevw_add() calls, they are deprecated. 2002-12-28 21:40:20 +00:00
netatalk Lock up ifaddr reference counts. 2002-12-18 11:46:59 +00:00
netatm Indirectly pull in declaration for M_IFADDR. 2002-12-28 21:09:38 +00:00
netgraph Make ng_fec.c compile again since Sam's changes. 2002-12-23 22:31:24 +00:00
netinet Bridged packets are supplied to the firewall with their IP header 2002-12-27 17:43:25 +00:00
netinet6 If the caller of rtrequest*(RTM_DELETE, ...) asked for a copy of 2002-12-25 10:21:02 +00:00
netipsec SMP locking for ifnet list. 2002-12-22 05:35:03 +00:00
netipx Fix a sizeof(int) != sizeof(void *) warning. 2002-11-08 21:16:27 +00:00
netkey o Untangle the confusion with the malloc flags {M_WAITOK, M_NOWAIT} and 2002-12-19 22:58:27 +00:00
netnatm Be consistent about functions being static. 2002-10-16 09:19:17 +00:00
netncp - Change mb_copy_t to take a size_t as the length argument instead of an 2002-11-08 21:26:32 +00:00
netns Use m_length() instead of home-rolled versions. 2002-09-18 19:44:14 +00:00
netsmb o Untangle the confusion with the malloc flags {M_WAITOK, M_NOWAIT} and 2002-12-19 22:58:27 +00:00
nfs Change iov_base's type from char *' to the standard void *'. All 2002-10-11 14:58:34 +00:00
nfsclient Abstract-out the constants for the sequential heuristic. 2002-12-28 20:37:50 +00:00
nfsserver Abstract-out the constants for the sequential heuristic. 2002-12-28 20:28:10 +00:00
opencrypto correct minor # in make_dev call 2002-11-08 23:07:41 +00:00
pc98 Unspam some experimental changes which should not have been committed. 2002-12-17 13:37:08 +00:00
pccard MFp4: 2002-11-27 06:04:49 +00:00
pci Change the chip description from "DFE-550TX" to "DL10050". 2002-12-23 21:50:47 +00:00
posix4 Rework the sysconf(3) interaction with aio: 2002-11-17 04:15:34 +00:00
powerpc MB_LEN_MAX is not MD, move it to the MI limits.h. 2002-12-22 06:38:45 +00:00
rpc
security Map VAPPEND to VWRITE since the ugidfw rule syntax doesn't specifically 2002-12-28 23:41:18 +00:00
sparc64 Use memset instead of __builtin_memset. Apparently there's an inline 2002-12-29 08:37:11 +00:00
sys Add a new vnode flag VI_DOINGINACT to indicate that a VOP_INACTIVE 2002-12-29 18:30:49 +00:00
tools - Move ASSERT_VOP_*LOCK* functionality into functions in vfs_subr.c 2002-09-26 04:48:44 +00:00
ufs Use three UMA zones for FFS/UFS inodes instead of malloc space. 2002-12-27 11:05:05 +00:00
vm Reduce the number of times that we acquire and release the page queues 2002-12-29 07:17:06 +00:00
Makefile