sg_pager.c (248084) | sg_pager.c (254141) |
---|---|
1/*- 2 * Copyright (c) 2009 Advanced Computing Technologies LLC 3 * Written by: John H. Baldwin <jhb@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2009 Advanced Computing Technologies LLC 3 * Written by: John H. Baldwin <jhb@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> |
29__FBSDID("$FreeBSD: head/sys/vm/sg_pager.c 248084 2013-03-09 02:32:23Z attilio $"); | 29__FBSDID("$FreeBSD: head/sys/vm/sg_pager.c 254141 2013-08-09 11:28:55Z attilio $"); |
30 31/* 32 * This pager manages OBJT_SG objects. These objects are backed by 33 * a scatter/gather list of physical address ranges. 34 */ 35 36#include <sys/param.h> 37#include <sys/lock.h> --- 143 unchanged lines hidden (view full) --- 181 182 /* Construct a new fake page. */ 183 page = vm_page_getfake(paddr, memattr); 184 VM_OBJECT_WLOCK(object); 185 TAILQ_INSERT_TAIL(&object->un_pager.sgp.sgp_pglist, page, pageq); 186 187 /* Free the original pages and insert this fake page into the object. */ 188 for (i = 0; i < count; i++) { | 30 31/* 32 * This pager manages OBJT_SG objects. These objects are backed by 33 * a scatter/gather list of physical address ranges. 34 */ 35 36#include <sys/param.h> 37#include <sys/lock.h> --- 143 unchanged lines hidden (view full) --- 181 182 /* Construct a new fake page. */ 183 page = vm_page_getfake(paddr, memattr); 184 VM_OBJECT_WLOCK(object); 185 TAILQ_INSERT_TAIL(&object->un_pager.sgp.sgp_pglist, page, pageq); 186 187 /* Free the original pages and insert this fake page into the object. */ 188 for (i = 0; i < count; i++) { |
189 if (i == reqpage && 190 vm_page_replace(page, object, offset) != m[i]) 191 panic("sg_pager_getpages: invalid place replacement"); |
|
189 vm_page_lock(m[i]); 190 vm_page_free(m[i]); 191 vm_page_unlock(m[i]); 192 } | 192 vm_page_lock(m[i]); 193 vm_page_free(m[i]); 194 vm_page_unlock(m[i]); 195 } |
193 vm_page_insert(page, object, offset); | |
194 m[reqpage] = page; 195 page->valid = VM_PAGE_BITS_ALL; 196 197 return (VM_PAGER_OK); 198} 199 200static void 201sg_pager_putpages(vm_object_t object, vm_page_t *m, int count, --- 17 unchanged lines hidden --- | 196 m[reqpage] = page; 197 page->valid = VM_PAGE_BITS_ALL; 198 199 return (VM_PAGER_OK); 200} 201 202static void 203sg_pager_putpages(vm_object_t object, vm_page_t *m, int count, --- 17 unchanged lines hidden --- |