git: d0b691a7c1aa - main - vm_domainset: Simplify vm_domainset_iter_next()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 09 Sep 2025 07:58:01 UTC
The branch main has been updated by olce:
URL: https://cgit.FreeBSD.org/src/commit/?id=d0b691a7c1aacf5a3f5ee6fc53f08563744d7203
commit d0b691a7c1aacf5a3f5ee6fc53f08563744d7203
Author: Olivier Certner <olce@FreeBSD.org>
AuthorDate: 2025-07-07 20:37:14 +0000
Commit: Olivier Certner <olce@FreeBSD.org>
CommitDate: 2025-09-09 07:56:50 +0000
vm_domainset: Simplify vm_domainset_iter_next()
As we are now visiting each domain only once, the test in
vm_domainset_iter_prefer() about skipping the preferred domain (the one
initially visited for policy DOMAINSET_POLICY_PREFER) becomes redundant.
Removing it makes this function essentially the same as
vm_domainset_iter_rr().
Thus, remove vm_domainset_iter_prefer(). This makes all policies behave
the same in vm_domainset_iter_next().
No functional change (intended).
PR: 277476
MFC after: 10 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51250
---
sys/vm/vm_domainset.c | 32 ++------------------------------
1 file changed, 2 insertions(+), 30 deletions(-)
diff --git a/sys/vm/vm_domainset.c b/sys/vm/vm_domainset.c
index bd15449559a5..a46dbe5ae92e 100644
--- a/sys/vm/vm_domainset.c
+++ b/sys/vm/vm_domainset.c
@@ -101,22 +101,11 @@ static void
vm_domainset_iter_rr(struct vm_domainset_iter *di, int *domain)
{
+ /* Grab the next domain in 'ds_order'. */
*domain = di->di_domain->ds_order[
++(*di->di_iter) % di->di_domain->ds_cnt];
}
-static void
-vm_domainset_iter_prefer(struct vm_domainset_iter *di, int *domain)
-{
- int d;
-
- do {
- d = di->di_domain->ds_order[
- ++(*di->di_iter) % di->di_domain->ds_cnt];
- } while (d == di->di_domain->ds_prefer);
- *domain = d;
-}
-
static void
vm_domainset_iter_interleave(struct vm_domainset_iter *di, int *domain)
{
@@ -133,24 +122,7 @@ vm_domainset_iter_next(struct vm_domainset_iter *di, int *domain)
KASSERT(!DOMAINSET_EMPTY(&di->di_remain_mask),
("%s: Already iterated on all domains", __func__));
- switch (di->di_policy) {
- case DOMAINSET_POLICY_FIRSTTOUCH:
- /*
- * To prevent impossible allocations we convert an invalid
- * first-touch to round-robin.
- */
- /* FALLTHROUGH */
- case DOMAINSET_POLICY_INTERLEAVE:
- /* FALLTHROUGH */
- case DOMAINSET_POLICY_ROUNDROBIN:
- vm_domainset_iter_rr(di, domain);
- break;
- case DOMAINSET_POLICY_PREFER:
- vm_domainset_iter_prefer(di, domain);
- break;
- default:
- panic("%s: Unknown policy %d", __func__, di->di_policy);
- }
+ vm_domainset_iter_rr(di, domain);
KASSERT(*domain < vm_ndomains,
("%s: Invalid domain %d", __func__, *domain));
}