summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2010-05-03 19:19:58 +0000
committerkib <kib@FreeBSD.org>2010-05-03 19:19:58 +0000
commit6ca323ef63a448a489c16f9cbb57db639aa48201 (patch)
tree4982b37cc575685653a51e330bc579a58e4ea881 /sys/vm
parent801d761a223441f19bbdaabe1c327b4c37b619be (diff)
downloadFreeBSD-src-6ca323ef63a448a489c16f9cbb57db639aa48201.zip
FreeBSD-src-6ca323ef63a448a489c16f9cbb57db639aa48201.tar.gz
Handle busy status of the page in a way expected for pager_getpage().
Flush requested page, unbusy other pages, do not clear m->busy. Reviewed by: alc MFC after: 1 week
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/phys_pager.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/vm/phys_pager.c b/sys/vm/phys_pager.c
index 42cdab3..97674e3 100644
--- a/sys/vm/phys_pager.c
+++ b/sys/vm/phys_pager.c
@@ -152,10 +152,10 @@ phys_pager_getpages(vm_object_t object, vm_page_t *m, int count, int reqpage)
KASSERT(m[i]->dirty == 0,
("phys_pager_getpages: dirty page %p", m[i]));
/* The requested page must remain busy, the others not. */
- if (reqpage != i) {
- m[i]->oflags &= ~VPO_BUSY;
- m[i]->busy = 0;
- }
+ if (i == reqpage)
+ vm_page_flash(m[i]);
+ else
+ vm_page_wakeup(m[i]);
}
return (VM_PAGER_OK);
}
OpenPOWER on IntegriCloud