Non-functional change to make consuming claims more concise: When we limit the consumption of claims to the remaining claims of the domain, we can make the code more concise by limiting the adjustment to it instead of carrying a special case for it.
Signed-off-by: Bernhard Kaindl <[email protected]> Co-authored-by: Roger Pau Monné <[email protected]> --- Changes - Use min_t(unsigned long, a, b) as the tool of the trade (Roger Pau Monné) - Reviewed by Andrew Cooper and Roger Pau Monné(Excluding comments, commit message) - Regression-tested and included as part of te NUMA work for XenServer 9 - Improved comments and the commit message (non-functional change, comment cleanup) Previous reviews ---------------- Review with the requested changes to the commit message: - https://patchew.org/Xen/[email protected]/15ae395c6933e74da0cdd8f9d71d349a7bfad3f3.1757261045.git.bernhard.kai...@cloud.com/ Obsoleted review: - https://patchew.org/Xen/[email protected]/5f417fea5ca8e4da0d4b9679103c3eff4bc92900.1755341947.git.bernhard.kai...@cloud.com/ --- xen/common/page_alloc.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index 1f67b88a89..ae2a560e0a 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -510,8 +510,11 @@ static unsigned long avail_heap_pages( return free_pages; } +/* Adjust the tot_pages and remaining outstanding claims of the domain. */ unsigned long domain_adjust_tot_pages(struct domain *d, long pages) { + unsigned long adjustment; + ASSERT(rspin_is_locked(&d->page_alloc_lock)); d->tot_pages += pages; @@ -519,23 +522,19 @@ unsigned long domain_adjust_tot_pages(struct domain *d, long pages) * can test d->outstanding_pages race-free because it can only change * if d->page_alloc_lock and heap_lock are both held, see also * domain_set_outstanding_pages below + * + * skip claims adjustment when the domain has no outstanding claims + * or we unassigned pages from it. */ if ( !d->outstanding_pages || pages <= 0 ) goto out; spin_lock(&heap_lock); BUG_ON(outstanding_claims < d->outstanding_pages); - if ( d->outstanding_pages < pages ) - { - /* `pages` exceeds the domain's outstanding count. Zero it out. */ - outstanding_claims -= d->outstanding_pages; - d->outstanding_pages = 0; - } - else - { - outstanding_claims -= pages; - d->outstanding_pages -= pages; - } + /* consume claims until the domain's outstanding_claims are exhausted */ + adjustment = min_t(unsigned long, d->outstanding_pages, pages); + d->outstanding_pages -= adjustment; + outstanding_claims -= adjustment; spin_unlock(&heap_lock); out: -- 2.34.1
