The branch main has been updated by olce: URL: https://cgit.FreeBSD.org/src/commit/?id=d0b691a7c1aacf5a3f5ee6fc53f08563744d7203
commit d0b691a7c1aacf5a3f5ee6fc53f08563744d7203 Author: Olivier Certner <o...@freebsd.org> AuthorDate: 2025-07-07 20:37:14 +0000 Commit: Olivier Certner <o...@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)); }