git: 7c9fe7a7925b - main - vm_page: remove obsolete page alloc loops
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 16 May 2025 08:20:21 UTC
The branch main has been updated by dougm:
URL: https://cgit.FreeBSD.org/src/commit/?id=7c9fe7a7925b8f60e056628fceaaf5f1a969fff4
commit 7c9fe7a7925b8f60e056628fceaaf5f1a969fff4
Author: Doug Moore <dougm@FreeBSD.org>
AuthorDate: 2025-05-16 08:05:40 +0000
Commit: Doug Moore <dougm@FreeBSD.org>
CommitDate: 2025-05-16 08:05:40 +0000
vm_page: remove obsolete page alloc loops
When page_alloc_noobj functions were introduced, the need for loops to
support cycles of try-alloc, then wait, then retry disppeared from
vm_page_alloc_domain and vm_page_alloc_contig_domain functions, but
loops remained. Remove them.
Reported by: alc
Reviewed by: alc, markj, kib
Differential Revision: https://reviews.freebsd.org/D50263
---
sys/vm/vm_page.c | 32 +++++++++++++++-----------------
1 file changed, 15 insertions(+), 17 deletions(-)
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 035b144ccd1e..f83df515a03d 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -2140,8 +2140,6 @@ again:
* Not allocatable, give up.
*/
pctrie_iter_reset(pages);
- if (vm_domain_alloc_fail(vmd, object, req))
- goto again;
return (NULL);
}
@@ -2333,23 +2331,23 @@ vm_page_alloc_contig_domain(vm_object_t object, vm_pindex_t pindex, int domain,
KASSERT(npages > 0, ("vm_page_alloc_contig: npages is zero"));
vm_page_iter_init(&pages, object);
- for (;;) {
+ m_ret = NULL;
#if VM_NRESERVLEVEL > 0
- /*
- * Can we allocate the pages from a reservation?
- */
- if (vm_object_reserv(object) &&
- (m_ret = vm_reserv_alloc_contig(object, pindex, domain,
- req, npages, low, high, alignment, boundary, &pages)) !=
- NULL) {
- break;
- }
+ /*
+ * Can we allocate the pages from a reservation?
+ */
+ if (vm_object_reserv(object)) {
+ m_ret = vm_reserv_alloc_contig(object, pindex, domain,
+ req, npages, low, high, alignment, boundary, &pages);
+ }
#endif
- if ((m_ret = vm_page_find_contig_domain(domain, req, npages,
- low, high, alignment, boundary)) != NULL)
- break;
- if (!vm_domain_alloc_fail(VM_DOMAIN(domain), object, req))
- return (NULL);
+ if (m_ret == NULL) {
+ m_ret = vm_page_find_contig_domain(domain, req, npages,
+ low, high, alignment, boundary);
+ }
+ if (m_ret == NULL) {
+ (void)vm_domain_alloc_fail(VM_DOMAIN(domain), object, req);
+ return (NULL);
}
/*