device_pager.c (945f418ab8a676a9675bf5b845514cf63dbc652a) | device_pager.c (eb00b276ab2a5a549620ec3fe92c22fd0ddf948e) |
---|---|
1/*- 2 * Copyright (c) 1990 University of Utah. 3 * Copyright (c) 1991, 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department. --- 241 unchanged lines hidden (view full) --- 250 */ 251 VM_OBJECT_LOCK(object); 252 dev_pager_updatefake(page, paddr, memattr); 253 if (count > 1) { 254 255 for (i = 0; i < count; i++) { 256 if (i != reqpage) { 257 vm_page_lock(m[i]); | 1/*- 2 * Copyright (c) 1990 University of Utah. 3 * Copyright (c) 1991, 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department. --- 241 unchanged lines hidden (view full) --- 250 */ 251 VM_OBJECT_LOCK(object); 252 dev_pager_updatefake(page, paddr, memattr); 253 if (count > 1) { 254 255 for (i = 0; i < count; i++) { 256 if (i != reqpage) { 257 vm_page_lock(m[i]); |
258 vm_page_lock_queues(); | |
259 vm_page_free(m[i]); | 258 vm_page_free(m[i]); |
260 vm_page_unlock_queues(); | |
261 vm_page_unlock(m[i]); 262 } 263 } 264 } 265 } else { 266 /* 267 * Replace the passed in reqpage page with our own fake page and 268 * free up the all of the original pages. 269 */ 270 page = dev_pager_getfake(paddr, memattr); 271 VM_OBJECT_LOCK(object); 272 TAILQ_INSERT_TAIL(&object->un_pager.devp.devp_pglist, page, pageq); 273 for (i = 0; i < count; i++) { 274 vm_page_lock(m[i]); | 259 vm_page_unlock(m[i]); 260 } 261 } 262 } 263 } else { 264 /* 265 * Replace the passed in reqpage page with our own fake page and 266 * free up the all of the original pages. 267 */ 268 page = dev_pager_getfake(paddr, memattr); 269 VM_OBJECT_LOCK(object); 270 TAILQ_INSERT_TAIL(&object->un_pager.devp.devp_pglist, page, pageq); 271 for (i = 0; i < count; i++) { 272 vm_page_lock(m[i]); |
275 vm_page_lock_queues(); | |
276 vm_page_free(m[i]); | 273 vm_page_free(m[i]); |
277 vm_page_unlock_queues(); | |
278 vm_page_unlock(m[i]); 279 } 280 vm_page_insert(page, object, offset); 281 m[reqpage] = page; 282 } 283 page->valid = VM_PAGE_BITS_ALL; 284 return (VM_PAGER_OK); 285} --- 72 unchanged lines hidden --- | 274 vm_page_unlock(m[i]); 275 } 276 vm_page_insert(page, object, offset); 277 m[reqpage] = page; 278 } 279 page->valid = VM_PAGE_BITS_ALL; 280 return (VM_PAGER_OK); 281} --- 72 unchanged lines hidden --- |