Date: Mon, 19 May 2025 03:59:12 GMT From: Doug Moore <dougm@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 26b3641f97d9 - main - vm_page_grab_pages: avoid doomed range lookups Message-ID: <202505190359.54J3xCGi093692@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=26b3641f97d9025a7c12b70935098892ae26ca0c commit 26b3641f97d9025a7c12b70935098892ae26ca0c Author: Doug Moore <dougm@FreeBSD.org> AuthorDate: 2025-05-19 03:58:00 +0000 Commit: Doug Moore <dougm@FreeBSD.org> CommitDate: 2025-05-19 03:58:00 +0000 vm_page_grab_pages: avoid doomed range lookups In vm_page_grab_pages, if a range of grabbed pages has just been exhausted, then an immediate request for a new range is futile; we know there's no page there. So only try to lookup more ranges after allocating a page. Reviewed by: kib, markj Differential Revision: https://reviews.freebsd.org/D50394 --- sys/vm/vm_page.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index eec85a5eb6f4..ea6fbdbc6386 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -5164,14 +5164,13 @@ vm_page_grab_pages(vm_object_t object, vm_pindex_t pindex, int allocflags, i = 0; vm_page_iter_init(&pages, object); retrylookup: - ahead = 0; + ahead = -1; for (; i < count; i++) { - if (ahead == 0) { + if (ahead < 0) { ahead = vm_radix_iter_lookup_range( &pages, pindex + i, &ma[i], count - i); } - if (ahead > 0) { - --ahead; + if (ahead-- > 0) { m = ma[i]; if (!vm_page_tryacquire(m, allocflags)) { if (vm_page_grab_sleep(object, m, pindex + i,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505190359.54J3xCGi093692>