vm_fault: Stop specifying VM_ALLOC_ZERO
Now vm_page_alloc() and friends will unconditionally preserve PG_ZERO, so there is no point in setting this flag. Eliminate a local variable and add a comment explaining why we prioritize the allocation when the process is doomed. No functional change intended. Reviewed by: kib, alc Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32036
This commit is contained in:
parent
6d3c78d970
commit
b801c79dda
@ -1113,7 +1113,6 @@ static int
|
||||
vm_fault_allocate(struct faultstate *fs)
|
||||
{
|
||||
struct domainset *dset;
|
||||
int alloc_req;
|
||||
int rv;
|
||||
|
||||
if ((fs->object->flags & OBJ_SIZEVNLOCK) != 0) {
|
||||
@ -1150,9 +1149,14 @@ vm_fault_allocate(struct faultstate *fs)
|
||||
/*
|
||||
* Allocate a new page for this object/offset pair.
|
||||
*
|
||||
* Unlocked read of the p_flag is harmless. At worst, the P_KILLED
|
||||
* might be not observed there, and allocation can fail, causing
|
||||
* restart and new reading of the p_flag.
|
||||
* If the process has a fatal signal pending, prioritize the allocation
|
||||
* with the expectation that the process will exit shortly and free some
|
||||
* pages. In particular, the signal may have been posted by the page
|
||||
* daemon in an attempt to resolve an out-of-memory condition.
|
||||
*
|
||||
* The unlocked read of the p_flag is harmless. At worst, the P_KILLED
|
||||
* might be not observed here, and allocation fails, causing a restart
|
||||
* and new reading of the p_flag.
|
||||
*/
|
||||
dset = fs->object->domain.dr_policy;
|
||||
if (dset == NULL)
|
||||
@ -1161,12 +1165,8 @@ vm_fault_allocate(struct faultstate *fs)
|
||||
#if VM_NRESERVLEVEL > 0
|
||||
vm_object_color(fs->object, atop(fs->vaddr) - fs->pindex);
|
||||
#endif
|
||||
alloc_req = P_KILLED(curproc) ?
|
||||
VM_ALLOC_SYSTEM : VM_ALLOC_NORMAL;
|
||||
if (fs->object->type != OBJT_VNODE &&
|
||||
fs->object->backing_object == NULL)
|
||||
alloc_req |= VM_ALLOC_ZERO;
|
||||
fs->m = vm_page_alloc(fs->object, fs->pindex, alloc_req);
|
||||
fs->m = vm_page_alloc(fs->object, fs->pindex,
|
||||
P_KILLED(curproc) ? VM_ALLOC_SYSTEM : 0);
|
||||
}
|
||||
if (fs->m == NULL) {
|
||||
if (vm_fault_allocate_oom(fs))
|
||||
|
Loading…
x
Reference in New Issue
Block a user