phys_pager.c (63e9755548e4feebf798686ab8bce0cdaaaf7b46) phys_pager.c (0012f373e43db2341c20329163ed2d5ad3b0f341)
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2000 Peter Wemm
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:

--- 131 unchanged lines hidden (view full) ---

140static int
141phys_pager_getpages(vm_object_t object, vm_page_t *m, int count, int *rbehind,
142 int *rahead)
143{
144 int i;
145
146 VM_OBJECT_ASSERT_WLOCKED(object);
147 for (i = 0; i < count; i++) {
1/*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2000 Peter Wemm
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:

--- 131 unchanged lines hidden (view full) ---

140static int
141phys_pager_getpages(vm_object_t object, vm_page_t *m, int count, int *rbehind,
142 int *rahead)
143{
144 int i;
145
146 VM_OBJECT_ASSERT_WLOCKED(object);
147 for (i = 0; i < count; i++) {
148 if (m[i]->valid == 0) {
148 if (vm_page_none_valid(m[i])) {
149 if ((m[i]->flags & PG_ZERO) == 0)
150 pmap_zero_page(m[i]);
149 if ((m[i]->flags & PG_ZERO) == 0)
150 pmap_zero_page(m[i]);
151 m[i]->valid = VM_PAGE_BITS_ALL;
151 vm_page_valid(m[i]);
152 }
152 }
153 KASSERT(m[i]->valid == VM_PAGE_BITS_ALL,
153 KASSERT(vm_page_all_valid(m[i]),
154 ("phys_pager_getpages: partially valid page %p", m[i]));
155 KASSERT(m[i]->dirty == 0,
156 ("phys_pager_getpages: dirty page %p", m[i]));
157 }
158 if (rbehind)
159 *rbehind = 0;
160 if (rahead)
161 *rahead = 0;

--- 42 unchanged lines hidden (view full) ---

204 end = *last;
205 *first = base;
206 *last = end;
207
208 for (i = base; i <= end; i++) {
209 ahead = MIN(end - i, PHYSALLOC);
210 m = vm_page_grab(object, i,
211 VM_ALLOC_NORMAL | VM_ALLOC_COUNT(ahead));
154 ("phys_pager_getpages: partially valid page %p", m[i]));
155 KASSERT(m[i]->dirty == 0,
156 ("phys_pager_getpages: dirty page %p", m[i]));
157 }
158 if (rbehind)
159 *rbehind = 0;
160 if (rahead)
161 *rahead = 0;

--- 42 unchanged lines hidden (view full) ---

204 end = *last;
205 *first = base;
206 *last = end;
207
208 for (i = base; i <= end; i++) {
209 ahead = MIN(end - i, PHYSALLOC);
210 m = vm_page_grab(object, i,
211 VM_ALLOC_NORMAL | VM_ALLOC_COUNT(ahead));
212 if (m->valid != VM_PAGE_BITS_ALL) {
212 if (!vm_page_all_valid(m))
213 vm_page_zero_invalid(m, TRUE);
213 vm_page_zero_invalid(m, TRUE);
214 m->valid = VM_PAGE_BITS_ALL;
215 }
216 KASSERT(m->dirty == 0,
217 ("phys_pager_populate: dirty page %p", m));
218 }
219 return (VM_PAGER_OK);
220}
221
222static void
223phys_pager_putpages(vm_object_t object, vm_page_t *m, int count, boolean_t sync,

--- 30 unchanged lines hidden ---
214 KASSERT(m->dirty == 0,
215 ("phys_pager_populate: dirty page %p", m));
216 }
217 return (VM_PAGER_OK);
218}
219
220static void
221phys_pager_putpages(vm_object_t object, vm_page_t *m, int count, boolean_t sync,

--- 30 unchanged lines hidden ---