Move all accounting to dedicated functions and rename them accordingly. Signed-off-by: Jean Delvare --- This is based on a suggestion by SeongJae Park. Comments welcome. mm/cma.c | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) --- linux-6.17.orig/mm/cma.c +++ linux-6.17/mm/cma.c @@ -37,31 +37,27 @@ struct cma cma_areas[MAX_CMA_AREAS]; unsigned int cma_area_count; #ifdef CONFIG_SYSFS -static void cma_sysfs_account_success_pages(struct cma *cma, - unsigned long nr_pages) +#define cma_inc_page_counter(n, a) atomic64_add((n), (a)) +#else +#define cma_inc_page_counter(n, a) do {} while (0) +#endif + +static void cma_account_success(struct cma *cma, unsigned long nr_pages) { - atomic64_add(nr_pages, &cma->nr_pages_succeeded); + count_vm_event(CMA_ALLOC_SUCCESS); + cma_inc_page_counter(nr_pages, &cma->nr_pages_succeeded); } -static void cma_sysfs_account_fail_pages(struct cma *cma, - unsigned long nr_pages) +static void cma_account_fail(struct cma *cma, unsigned long nr_pages) { - atomic64_add(nr_pages, &cma->nr_pages_failed); + count_vm_event(CMA_ALLOC_FAIL); + cma_inc_page_counter(nr_pages, &cma->nr_pages_failed); } -static void cma_sysfs_account_release_pages(struct cma *cma, - unsigned long nr_pages) +static void cma_account_release(struct cma *cma, unsigned long nr_pages) { - atomic64_add(nr_pages, &cma->nr_pages_released); + cma_inc_page_counter(nr_pages, &cma->nr_pages_released); } -#else -static void cma_sysfs_account_success_pages(struct cma *cma, - unsigned long nr_pages) {}; -static void cma_sysfs_account_fail_pages(struct cma *cma, - unsigned long nr_pages) {}; -static void cma_sysfs_account_release_pages(struct cma *cma, - unsigned long nr_pages) {}; -#endif phys_addr_t cma_get_base(const struct cma *cma) { @@ -921,13 +917,10 @@ static struct page *__cma_alloc(struct c pr_debug("%s(): returned %p\n", __func__, page); trace_cma_alloc_finish(name, page ? page_to_pfn(page) : 0, page, count, align, ret); - if (page) { - count_vm_event(CMA_ALLOC_SUCCESS); - cma_sysfs_account_success_pages(cma, count); - } else { - count_vm_event(CMA_ALLOC_FAIL); - cma_sysfs_account_fail_pages(cma, count); - } + if (page) + cma_account_success(cma, count); + else + cma_account_fail(cma, count); return page; } @@ -1029,7 +1022,7 @@ bool cma_release(struct cma *cma, const free_contig_range(pfn, count); cma_clear_bitmap(cma, cmr, pfn, count); - cma_sysfs_account_release_pages(cma, count); + cma_account_release(cma, count); trace_cma_release(cma->name, pfn, pages, count); return true; -- Jean Delvare SUSE L3 Support