aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2020-02-13 23:18:35 +0000
committerMark Johnston <markj@FreeBSD.org>2020-02-13 23:18:35 +0000
commit06ef60525f8ebcc171e5eb4d369200f5491f66a8 (patch)
tree647d4e9eff1def351dba4b8ed6b63ef2fb72fc67 /sys/vm/vm_page.c
parentcefc92e1a2beaa7077e4b363e034797505f6c4cd (diff)
downloadsrc-06ef60525f8ebcc171e5eb4d369200f5491f66a8.tar.gz
src-06ef60525f8ebcc171e5eb4d369200f5491f66a8.zip
Fix handling of WAITFAIL in vm_page_grab() and vm_page_grab_pages().
After sleeping through a memory shortage, we must return NULL rather than retry. Discussed with: jeff Reported by: pho Sponsored by: The FreeBSD Foundation
Notes
Notes: svn path=/head/; revision=357893
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r--sys/vm/vm_page.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 574c28384c61..087604d534ae 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -4258,7 +4258,7 @@ retrylookup:
return (NULL);
m = vm_page_alloc(object, pindex, pflags);
if (m == NULL) {
- if ((allocflags & VM_ALLOC_NOWAIT) != 0)
+ if ((allocflags & (VM_ALLOC_NOWAIT | VM_ALLOC_WAITFAIL)) != 0)
return (NULL);
goto retrylookup;
}
@@ -4466,7 +4466,8 @@ retrylookup:
m = vm_page_alloc_after(object, pindex + i,
pflags | VM_ALLOC_COUNT(count - i), mpred);
if (m == NULL) {
- if ((allocflags & VM_ALLOC_NOWAIT) != 0)
+ if ((allocflags & (VM_ALLOC_NOWAIT |
+ VM_ALLOC_WAITFAIL)) != 0)
break;
goto retrylookup;
}