Deleted Added
full compact
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 ---