1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-17 10:26:15 +00:00
freebsd/sys/vm
Alan Cox 14137dc045 In the previous revision, when I replaced the unconditional acquisition
of Giant in vm_pageout_scan() with VFS_LOCK_GIANT(), I had to eliminate
the acquisition of the vnode interlock before releasing the vm object's
lock because the vnode interlock cannot be held when VFS_LOCK_GIANT() is
performed.  Unfortunately, this allows the vnode to be recycled between
the release of the vm object's lock and the vget() on the vnode.

In this revision, I prevent the vnode from being recycled by acquiring
another reference to the vm object and underlying vnode before releasing
the vm object's lock.

This change also addresses another preexisting but trivial problem.  By
acquiring another reference to the vm object, I also prevent the vm
object from being recycled.  Previously, the "vnodes skipped" counter
could be wrong because if it examined a recycled vm object.

Reported by:	kib
Reviewed by:	kib
Approved by:	re (kensmith)
MFC after:	3 weeks
2007-07-02 06:56:37 +00:00
..
default_pager.c
device_pager.c
memguard.c
memguard.h
phys_pager.c
pmap.h
redzone.c
redzone.h
swap_pager.c Eliminate GIANT_REQUIRED from swap_pager_putpages(). 2007-06-24 18:40:30 +00:00
swap_pager.h
uma_core.c Revert VMCNT_* operations introduction. 2007-05-31 22:52:15 +00:00
uma_dbg.c
uma_dbg.h
uma_int.h Update stale comment on protecting UMA per-CPU caches: we now use 2007-05-09 22:53:34 +00:00
uma.h
vm_contig.c Enable the new physical memory allocator. 2007-06-16 04:57:06 +00:00
vm_extern.h
vm_fault.c Initialize reqpage to zero. 2007-06-17 04:14:27 +00:00
vm_glue.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
vm_init.c
vm_kern.c
vm_kern.h
vm_map.c Revert VMCNT_* operations introduction. 2007-05-31 22:52:15 +00:00
vm_map.h
vm_meter.c Commit 14/14 of sched_lock decomposition. 2007-06-05 00:00:57 +00:00
vm_mmap.c Make sure object is NULL- there is a possible case where you could 2007-06-17 04:17:48 +00:00
vm_object.c Enable the new physical memory allocator. 2007-06-16 04:57:06 +00:00
vm_object.h
vm_page.c Don't declare inline a function which isn't. 2007-06-17 04:19:05 +00:00
vm_page.h Enable the new physical memory allocator. 2007-06-16 04:57:06 +00:00
vm_pageout.c In the previous revision, when I replaced the unconditional acquisition 2007-07-02 06:56:37 +00:00
vm_pageout.h
vm_pageq.c Enable the new physical memory allocator. 2007-06-16 04:57:06 +00:00
vm_pager.c
vm_pager.h
vm_param.h
vm_phys.c Update a comment. 2007-06-16 05:25:53 +00:00
vm_phys.h Add a new physical memory allocator. However, do not yet connect it 2007-06-10 00:49:16 +00:00
vm_unix.c
vm_zeroidle.c Enable the new physical memory allocator. 2007-06-16 04:57:06 +00:00
vm.h
vnode_pager.c Do proper "locking" for missing vmmeters part. 2007-06-04 21:45:18 +00:00
vnode_pager.h