freebsd-nq/sys/kern
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
..
bus_if.m Add two interfaces to allow for busses to report the pnpinfo for 2002-10-07 05:06:38 +00:00
clock_if.m
device_if.m
genassym.sh
imgact_aout.c Use the fields in the sysentvec and in the vm map header in place of the 2002-09-21 22:07:17 +00:00
imgact_elf32.c Infrastructure tweaks to allow having both an Elf32 and an Elf64 executable 2002-07-20 02:56:12 +00:00
imgact_elf64.c Infrastructure tweaks to allow having both an Elf32 and an Elf64 executable 2002-07-20 02:56:12 +00:00
imgact_elf.c Fix multiple registration of the elf_legacy_coredump sysctl variable. 2002-12-21 01:15:39 +00:00
imgact_elfN.c Infrastructure tweaks to allow having both an Elf32 and an Elf64 executable 2002-07-20 02:56:12 +00:00
imgact_gzip.c Use the fields in the sysentvec and in the vm map header in place of the 2002-09-21 22:07:17 +00:00
imgact_shell.c Remove reference to struct execve_args from struct imgact, which 2002-11-05 01:59:56 +00:00
inflate.c
init_main.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
init_sysent.c Regenerate system calls (swapoff added) 2002-12-15 19:19:15 +00:00
kern_acct.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
kern_acl.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
kern_alq.c - Export the alq daemon thread pointer. 2002-09-26 07:38:56 +00:00
kern_clock.c 1. Support versioning and wall clock in kse mailbox, 2002-11-18 01:59:31 +00:00
kern_condvar.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_conf.c Remove unused cdevsw_ALLOCSTART macro. 2002-12-28 21:47:43 +00:00
kern_context.c Add getcontext, setcontext, and swapcontext as system calls. 2002-11-16 06:35:53 +00:00
kern_descrip.c Improve consistency between devfs and MAKEDEV: use UID_ROOT and 2002-12-27 16:54:44 +00:00
kern_environment.c remove syscallarg(). 2002-12-14 02:07:32 +00:00
kern_event.c White-space changes. 2002-12-24 09:44:51 +00:00
kern_exec.c Hold the page queues lock when performing vm_page_busy(). 2002-12-18 20:16:22 +00:00
kern_exit.c Fix a refcount race with the vmspace structure. In order to prevent 2002-12-15 18:50:04 +00:00
kern_fork.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_idle.c - Create a new scheduler api that is defined in sys/sched.h 2002-10-12 05:32:24 +00:00
kern_intr.c Don't put a newline in KTR traces. 2002-12-28 23:22:22 +00:00
kern_jail.c Don't forget to destroy the mutex if an error occurs 2002-12-20 14:32:20 +00:00
kern_kse.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_kthread.c Some kernel threads try to do significant work, and the default KSTACK_PAGES 2002-10-02 07:44:29 +00:00
kern_ktr.c - Export the alq daemon thread pointer. 2002-09-26 07:38:56 +00:00
kern_ktrace.c Some kernel threads try to do significant work, and the default KSTACK_PAGES 2002-10-02 07:44:29 +00:00
kern_linker.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
kern_lock.c Remove a race condition / deadlock from snapshots. When 2002-11-30 19:00:51 +00:00
kern_lockf.c - Fix a bunch of casts to long which were truncating off_t's. 2002-11-07 21:56:05 +00:00
kern_mac.c SCARGS removal take II. 2002-12-14 01:56:26 +00:00
kern_malloc.c Introduce malloc_last_fail() which returns the number of seconds since 2002-11-01 18:58:12 +00:00
kern_mib.c Move the definitions of the hw.physmem, hw.usermem and hw.availpages 2002-11-07 23:57:17 +00:00
kern_module.c SCARGS removal take II. 2002-12-14 01:56:26 +00:00
kern_mtxpool.c
kern_mutex.c Disable the kernacc() check in mtx_validate() until such time that kernacc 2002-10-25 08:40:20 +00:00
kern_ntptime.c Remove an unused variable. 2002-10-11 10:36:22 +00:00
kern_physio.c Change iov_base's type from char *' to the standard void *'. All 2002-10-11 14:58:34 +00:00
kern_poll.c Increase size of ifnet.if_flags from 16 bits (short) to 32 bits (int). To avoid 2002-08-18 07:05:00 +00:00
kern_proc.c - Add the new sched_pctcpu() function to the sched_* api. 2002-11-21 09:30:55 +00:00
kern_prot.c Include file cleanup; mac.h and malloc.h at one point had ordering 2002-08-01 17:47:56 +00:00
kern_resource.c - Create a new scheduler api that is defined in sys/sched.h 2002-10-12 05:32:24 +00:00
kern_sema.c
kern_shutdown.c During shutdown explain what the numbers following the 'syncing 2002-11-18 02:41:03 +00:00
kern_sig.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_subr.c Reduce the number of times that we acquire and release the page queues 2002-12-29 07:17:06 +00:00
kern_switch.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_sx.c
kern_synch.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_syscalls.c
kern_sysctl.c Implement mac_check_system_sysctl(), a MAC Framework entry point to 2002-10-27 07:12:34 +00:00
kern_tc.c Introduce a "time_uptime" global variable which holds the time since boot 2002-11-01 18:52:20 +00:00
kern_thread.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
kern_time.c add generic rate limiting support from netbsd; ratelimit is purely time based, 2002-12-20 23:54:47 +00:00
kern_timeout.c Fix a format buglet. 2002-09-05 11:42:03 +00:00
kern_uuid.c SMP locking for ifnet list. 2002-12-22 05:35:03 +00:00
kern_xxx.c more caddr_t removal. 2002-06-29 02:00:02 +00:00
ksched.c headers should not really include "opt_foo.h" (in this case opt_posix.h). 2002-11-15 22:55:06 +00:00
link_elf_obj.c Merge kld access control checks from the MAC tree: these access control 2002-11-19 22:12:42 +00:00
link_elf.c Merge kld access control checks from the MAC tree: these access control 2002-11-19 22:12:42 +00:00
linker_if.m
Make.tags.inc
Makefile
makesyscalls.sh The syscall names are string constants, so make them consts. 2002-10-29 15:47:06 +00:00
md4c.c
md5c.c We have memset() and memcpy() in the kernel now, so we don't need to 2002-10-20 22:33:42 +00:00
p1003_1b.c headers should not really include "opt_foo.h" (in this case opt_posix.h). 2002-11-15 22:55:06 +00:00
posix4_mib.c Rework the sysconf(3) interaction with aio: 2002-11-17 04:15:34 +00:00
sched_4bsd.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
subr_acl_posix1e.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
subr_autoconf.c
subr_blist.c This is David Schultz's swapoff code which I am finally able to commit. 2002-12-15 19:17:57 +00:00
subr_bus.c devd kernel improvements: 2002-11-30 00:49:43 +00:00
subr_clist.c
subr_clock.c Use the CPU_* OID constants instead of OID_AUTO for the clock-related 2002-08-07 19:43:54 +00:00
subr_devstat.c Use strlcpy() instead of strncpy() to copy NUL terminated strings 2002-10-17 20:03:38 +00:00
subr_disk.c This checkin reimplements the io-request priority hack in a way 2002-10-22 00:59:49 +00:00
subr_disklabel.c (This commit touches about 15 disk device drivers in a very consistent 2002-09-20 19:36:05 +00:00
subr_diskmbr.c Split MBR and PC98 on-disk sliceformats out from disklabel.h, step 1: 2002-10-01 07:24:55 +00:00
subr_diskslice.c Indent properly. 2002-12-17 19:31:26 +00:00
subr_eventhandler.c Wrap a line longer than 80 characters. 2002-07-19 17:44:44 +00:00
subr_hints.c
subr_kobj.c Convert hit and miss counters to unsigned values. Surely negative values 2002-06-10 22:40:26 +00:00
subr_log.c Make the msg_size, msg_bufx and msg_bufr memebers of struct msgbuf 2002-11-14 16:11:12 +00:00
subr_mbuf.c o Initialise each mbuf's m_len to 0 in m_getm(); mb_put_mem() depends 2002-11-27 04:26:00 +00:00
subr_mchain.c Remove the hto(be|le)[slq] and (be|le)toh[slq] macros defined in 2002-12-16 16:20:06 +00:00
subr_module.c
subr_param.c Change hw.physmem and hw.usermem to unsigned long like they used to be 2002-08-30 04:04:37 +00:00
subr_pcpu.c
subr_power.c Use ISO 9X variadic macro format; arguments are not optional, just 2002-07-15 17:17:56 +00:00
subr_prf.c Make the msg_size, msg_bufx and msg_bufr memebers of struct msgbuf 2002-11-14 16:11:12 +00:00
subr_prof.c Don't #error if we are lint. 2002-10-01 13:15:11 +00:00
subr_rman.c Make the rman_{get,set}_* macros into real functions. The macros 2002-11-27 03:55:22 +00:00
subr_rtc.c Use the CPU_* OID constants instead of OID_AUTO for the clock-related 2002-08-07 19:43:54 +00:00
subr_sbuf.c Add the new function "sbuf_done()" which returns non-zero if the sbuf is 2002-10-04 09:58:17 +00:00
subr_scanf.c Fix mis-indentation. 2002-10-02 09:09:25 +00:00
subr_smp.c Add a tunable kern.smp.disabled for disabling explicitly smp on an smp 2002-12-28 23:21:13 +00:00
subr_taskqueue.c If we fail to write to a vnode during a ktrace write, then we drop all 2002-08-01 13:35:38 +00:00
subr_trap.c Add code to ddb to allow backtracing an arbitrary thread. 2002-12-28 01:23:07 +00:00
subr_turnstile.c Disable the kernacc() check in mtx_validate() until such time that kernacc 2002-10-25 08:40:20 +00:00
subr_witness.c - Add a spin lock to single thread cache invalidation and tlb flush ipis, 2002-12-22 20:50:23 +00:00
subr_xxx.c
sys_generic.c SCARGS removal take II. 2002-12-14 01:56:26 +00:00
sys_pipe.c White-space changes. 2002-12-24 09:44:51 +00:00
sys_process.c Add a missing PROC_UNLOCK in ptrace() for the PT_IO case. 2002-10-16 16:28:33 +00:00
sys_socket.c s/sokqfilter/soo_kqfilter/ for consistency with the naming of all 2002-12-23 21:37:28 +00:00
syscalls.c Regenerate system calls (swapoff added) 2002-12-15 19:19:15 +00:00
syscalls.master This is David Schultz's swapoff code which I am finally able to commit. 2002-12-15 19:17:57 +00:00
sysv_ipc.c
sysv_msg.c o Clear a high bit of ipc_perm.seq so msgget(3) never returns a 2002-12-15 09:41:46 +00:00
sysv_sem.c Don't leak memory in semop(2). (Fix a bug I introduced in rev 1.55.) 2002-10-19 02:07:35 +00:00
sysv_shm.c return foo -> return (foo) 2002-08-15 02:10:12 +00:00
tty_compat.c
tty_conf.c
tty_cons.c Remove unused variable cn_devfsdev. 2002-12-17 19:30:50 +00:00
tty_pty.c Remove cdevsw_add calls, they are deprecated. 2002-12-28 21:39:46 +00:00
tty_subr.c
tty_tty.c Pass active_cred and file_cred into the MAC framework explicitly 2002-08-19 19:04:53 +00:00
tty.c In an SMP environment post-Giant it is no longer safe to blindly 2002-10-03 02:13:00 +00:00
uipc_accf.c
uipc_cow.c Change iov_base's type from char *' to the standard void *'. All 2002-10-11 14:58:34 +00:00
uipc_domain.c Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
uipc_jumbo.c o Lock page queue accesses by vm_page_free(). 2002-07-21 19:06:46 +00:00
uipc_mbuf2.c correct function names in KASSERT's for 2 m_tag routines 2002-11-26 17:59:16 +00:00
uipc_mbuf.c Replace aux mbufs with packet tags: 2002-10-16 01:54:46 +00:00
uipc_proto.c
uipc_sem.c Be consistent about funtions being static. 2002-10-16 10:42:13 +00:00
uipc_sockbuf.c Spotted a couple of places where the socket buffer's counters were being 2002-11-05 18:52:25 +00:00
uipc_socket2.c Spotted a couple of places where the socket buffer's counters were being 2002-11-05 18:52:25 +00:00
uipc_socket.c s/sokqfilter/soo_kqfilter/ for consistency with the naming of all 2002-12-23 21:37:28 +00:00
uipc_syscalls.c Move the declaration of the socket fileops from socketvar.h to file.h. 2002-12-23 22:46:47 +00:00
uipc_usrreq.c Ensure that the made-up inode number for a Unix domain socket is persistent. 2002-12-25 07:59:39 +00:00
vfs_acl.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
vfs_aio.c Lock filedesc while performing a range check on the file descriptor. 2002-12-27 08:39:42 +00:00
vfs_bio.c Hold the page queues lock when calling vm_page_flag_clear(). 2002-12-27 06:52:32 +00:00
vfs_cache.c Split up __getcwd so that kernel callers of the internal version 2002-09-02 22:40:30 +00:00
vfs_cluster.c - Use %j to print intmax_t values. 2002-11-07 22:41:08 +00:00
vfs_default.c Don't try to be cute and save a call/return by implementing a degenerate 2002-10-24 17:55:49 +00:00
vfs_export.c SMP locking for radix nodes. 2002-12-24 03:03:39 +00:00
vfs_extattr.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
vfs_init.c We don't need to check the return value of malloc() against 2002-06-22 21:44:11 +00:00
vfs_lookup.c Add a new 'NOMACCHECK' flag to namei() NDINIT flags, which permits the 2002-10-19 21:25:51 +00:00
vfs_mount.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
vfs_subr.c Add a new vnode flag VI_DOINGINACT to indicate that a VOP_INACTIVE 2002-12-29 18:30:49 +00:00
vfs_syscalls.c unwrap lines made short enough by SCARGS removal 2002-12-14 08:18:06 +00:00
vfs_vnops.c Abstract-out the constants for the sequential heuristic. 2002-12-28 20:28:10 +00:00
vnode_if.src Flush vop_refreshlabel() definition, since it is no longer used. 2002-12-24 19:47:13 +00:00