summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-09-02 04:04:12 +0000
committeralc <alc@FreeBSD.org>2002-09-02 04:04:12 +0000
commit0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b (patch)
tree975d74f6cbda496c6cf3c6d805bf1a9455c48c80 /sys/vm/vm_page.c
parentbb1016da55bc396e548c721c5bed3495697cef7d (diff)
downloadFreeBSD-src-0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b.zip
FreeBSD-src-0f13b0cacabdd3980a4b8b0c95680cf4a3cdc72b.tar.gz
o Synchronize updates to struct vm_page::cow with the page queues lock.
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r--sys/vm/vm_page.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 637d2c0..535f566 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -1812,10 +1812,9 @@ void
vm_page_cowclear(vm_page_t m)
{
- /* XXX KDM find out if giant is required here. */
- GIANT_REQUIRED;
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
if (m->cow) {
- atomic_subtract_int(&m->cow, 1);
+ m->cow--;
/*
* let vm_fault add back write permission lazily
*/
@@ -1828,9 +1827,9 @@ vm_page_cowclear(vm_page_t m)
void
vm_page_cowsetup(vm_page_t m)
{
- /* XXX KDM find out if giant is required here */
- GIANT_REQUIRED;
- atomic_add_int(&m->cow, 1);
+
+ mtx_assert(&vm_page_queue_mtx, MA_OWNED);
+ m->cow++;
vm_page_protect(m, VM_PROT_READ);
}
OpenPOWER on IntegriCloud