diff options
| author | Alan Cox <alc@FreeBSD.org> | 2002-07-28 05:46:47 +0000 |
|---|---|---|
| committer | Alan Cox <alc@FreeBSD.org> | 2002-07-28 05:46:47 +0000 |
| commit | 299018d3b6425aba087450227bb5bdad1d6ecfbe (patch) | |
| tree | 6046b48368a1c955ed38d495780f478e5a219e94 | |
| parent | 57123de6413b73cd36da0c194ab35d1d33166db9 (diff) | |
Notes
| -rw-r--r-- | sys/vm/vm_pageout.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index b9938c78b4f36..08319b86f4563 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -619,6 +619,7 @@ vm_pageout_page_free(vm_page_t m) { vm_page_busy(m); vm_page_protect(m, VM_PROT_NONE); vm_page_free(m); + cnt.v_dfree++; if (type == OBJT_SWAP || type == OBJT_DEFAULT) vm_object_deallocate(object); } @@ -783,8 +784,9 @@ rescan0: * Invalid pages can be easily freed */ if (m->valid == 0) { + vm_page_lock_queues(); vm_pageout_page_free(m); - cnt.v_dfree++; + vm_page_unlock_queues(); --page_shortage; /* @@ -1075,7 +1077,6 @@ rescan0: } cache_rover = (cache_rover + PQ_PRIME2) & PQ_L2_MASK; vm_pageout_page_free(m); - cnt.v_dfree++; } splx(s); vm_page_unlock_queues(); |
