diff options
| author | Olivier Certner <olce@FreeBSD.org> | 2025-07-07 20:37:14 +0000 |
|---|---|---|
| committer | Olivier Certner <olce@FreeBSD.org> | 2025-09-09 07:56:50 +0000 |
| commit | d0b691a7c1aacf5a3f5ee6fc53f08563744d7203 (patch) | |
| tree | 880017a50dd2965fa4aaf0492e6cf67fd7100a47 | |
| parent | d440953942372ca275d0743a6e220631bde440ee (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.c | 32 |
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)); } |
