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));
 }

Reply via email to