diff options
author | Peter Wemm <peter@FreeBSD.org> | 2002-07-12 04:38:51 +0000 |
---|---|---|
committer | Peter Wemm <peter@FreeBSD.org> | 2002-07-12 04:38:51 +0000 |
commit | a7e9138e370b173742e07c98062f340fb647de32 (patch) | |
tree | 96e4456bd6a92818548fc985bfdcc0e885f7be26 /sys/vm/vm_glue.c | |
parent | 7538e5500d301f5ea76527430f7a065b4b71c774 (diff) | |
download | src-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.c | 7 |
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); |