Deleted Added
full compact
vm_fault.c (296373) vm_fault.c (307929)
1/*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 1994 John S. Dyson
5 * All rights reserved.
6 * Copyright (c) 1994 David Greenman
7 * All rights reserved.
8 *

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

67 * rights to redistribute these changes.
68 */
69
70/*
71 * Page fault handling module.
72 */
73
74#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * Copyright (c) 1994 John S. Dyson
5 * All rights reserved.
6 * Copyright (c) 1994 David Greenman
7 * All rights reserved.
8 *

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

67 * rights to redistribute these changes.
68 */
69
70/*
71 * Page fault handling module.
72 */
73
74#include <sys/cdefs.h>
75__FBSDID("$FreeBSD: releng/10.3/sys/vm/vm_fault.c 286362 2015-08-06 08:51:15Z kib $");
75__FBSDID("$FreeBSD: releng/10.3/sys/vm/vm_fault.c 307929 2016-10-25 16:45:55Z glebius $");
76
77#include "opt_ktrace.h"
78#include "opt_vm.h"
79
80#include <sys/param.h>
81#include <sys/systm.h>
82#include <sys/kernel.h>
83#include <sys/lock.h>

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

281
282int
283vm_fault_hold(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type,
284 int fault_flags, vm_page_t *m_hold)
285{
286 vm_prot_t prot;
287 long ahead, behind;
288 int alloc_req, era, faultcount, nera, reqpage, result;
76
77#include "opt_ktrace.h"
78#include "opt_vm.h"
79
80#include <sys/param.h>
81#include <sys/systm.h>
82#include <sys/kernel.h>
83#include <sys/lock.h>

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

281
282int
283vm_fault_hold(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type,
284 int fault_flags, vm_page_t *m_hold)
285{
286 vm_prot_t prot;
287 long ahead, behind;
288 int alloc_req, era, faultcount, nera, reqpage, result;
289 boolean_t growstack, is_first_object_locked, wired;
289 boolean_t dead, growstack, is_first_object_locked, wired;
290 int map_generation;
291 vm_object_t next_object;
292 vm_page_t marray[VM_FAULT_READ_MAX];
293 int hardfault;
294 struct faultstate fs;
295 struct vnode *vp;
296 vm_page_t m;
297 int locked, error;

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

418
419 /*
420 * Search for the page at object/offset.
421 */
422 fs.object = fs.first_object;
423 fs.pindex = fs.first_pindex;
424 while (TRUE) {
425 /*
290 int map_generation;
291 vm_object_t next_object;
292 vm_page_t marray[VM_FAULT_READ_MAX];
293 int hardfault;
294 struct faultstate fs;
295 struct vnode *vp;
296 vm_page_t m;
297 int locked, error;

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

418
419 /*
420 * Search for the page at object/offset.
421 */
422 fs.object = fs.first_object;
423 fs.pindex = fs.first_pindex;
424 while (TRUE) {
425 /*
426 * If the object is dead, we stop here
426 * If the object is marked for imminent termination,
427 * we retry here, since the collapse pass has raced
428 * with us. Otherwise, if we see terminally dead
429 * object, return fail.
427 */
430 */
428 if (fs.object->flags & OBJ_DEAD) {
431 if ((fs.object->flags & OBJ_DEAD) != 0) {
432 dead = fs.object->type == OBJT_DEAD;
429 unlock_and_deallocate(&fs);
433 unlock_and_deallocate(&fs);
430 return (KERN_PROTECTION_FAILURE);
434 if (dead)
435 return (KERN_PROTECTION_FAILURE);
436 pause("vmf_de", 1);
437 goto RetryFault;
431 }
432
433 /*
434 * See if page is resident
435 */
436 fs.m = vm_page_lookup(fs.object, fs.pindex);
437 if (fs.m != NULL) {
438 /*

--- 1143 unchanged lines hidden ---
438 }
439
440 /*
441 * See if page is resident
442 */
443 fs.m = vm_page_lookup(fs.object, fs.pindex);
444 if (fs.m != NULL) {
445 /*

--- 1143 unchanged lines hidden ---