aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_glue.c
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2002-07-12 04:38:51 +0000
committerPeter Wemm <peter@FreeBSD.org>2002-07-12 04:38:51 +0000
commita7e9138e370b173742e07c98062f340fb647de32 (patch)
tree96e4456bd6a92818548fc985bfdcc0e885f7be26 /sys/vm/vm_glue.c
parent7538e5500d301f5ea76527430f7a065b4b71c774 (diff)
downloadsrc-a7e9138e370b173742e07c98062f340fb647de32.tar.gz
src-a7e9138e370b173742e07c98062f340fb647de32.zip
Avoid a vm_page_lookup() - that uses a spinlock protected hash. We can
just use the object's memq for our nefarious purposes.
Notes
Notes: svn path=/head/; revision=99851
Diffstat (limited to 'sys/vm/vm_glue.c')
-rw-r--r--sys/vm/vm_glue.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c
index ceae0138b8cc..505d1e3b6a7f 100644
--- a/sys/vm/vm_glue.c
+++ b/sys/vm/vm_glue.c
@@ -319,10 +319,13 @@ vm_proc_swapin(struct proc *p)
rv = vm_pager_get_pages(upobj, &m, 1, 0);
if (rv != VM_PAGER_OK)
panic("vm_proc_swapin: cannot get upage");
- m = vm_page_lookup(upobj, i);
- m->valid = VM_PAGE_BITS_ALL;
}
ma[i] = m;
+ }
+ if (upobj->resident_page_count != UAREA_PAGES)
+ panic("vm_proc_swapin: lost pages from upobj");
+ TAILQ_FOREACH(m, &upobj->memq, listq) {
+ m->valid = VM_PAGE_BITS_ALL;
vm_page_wire(m);
vm_page_wakeup(m);
vm_page_flag_set(m, PG_MAPPED | PG_WRITEABLE);