aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Certner <olce@FreeBSD.org>2025-07-07 20:37:14 +0000
committerOlivier Certner <olce@FreeBSD.org>2025-09-09 07:56:50 +0000
commitd0b691a7c1aacf5a3f5ee6fc53f08563744d7203 (patch)
tree880017a50dd2965fa4aaf0492e6cf67fd7100a47
parentd440953942372ca275d0743a6e220631bde440ee (diff)
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
-rw-r--r--sys/vm/vm_domainset.c32
1 files 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,23 +101,12 @@ 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)
{
int d;
@@ -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));
}