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
..
2002-12-14 02:07:32 +00:00
2002-12-24 09:44:51 +00:00
2002-12-28 23:22:22 +00:00
2002-12-14 01:56:26 +00:00
2002-12-14 01:56:26 +00:00
2002-10-11 10:36:22 +00:00
2002-09-05 11:42:03 +00:00
2002-12-22 05:35:03 +00:00
2002-11-30 00:49:43 +00:00
2002-12-17 19:31:26 +00:00
2002-10-01 13:15:11 +00:00
2002-10-02 09:09:25 +00:00
2002-12-14 01:56:26 +00:00
2002-12-24 09:44:51 +00:00
2002-08-15 02:10:12 +00:00
2002-12-17 19:30:50 +00:00
2002-12-24 03:03:39 +00:00