Re: [PATCH 0/8] mm: globalize rest_of_page() macro

Jens Axboe
2026-03-04T03:35:07Z

On 3/3/26 8:32 PM, Yury Norov wrote:
> My motivation is that it helps to simplify constructions like this:
>
> - loff_t cmp_len = min(PAGE_SIZE - offset_in_page(srcoff),
> - PAGE_SIZE - offset_in_page(dstoff));
> + loff_t cmp_len = min(rest_of_page(srcoff), rest_of_page(dstoff));
>
> Or this:
>
> - if (folio_test_highmem(dst_folio) &&
> - chunk > PAGE_SIZE - offset_in_page(dst_off))
> - chunk = PAGE_SIZE - offset_in_page(dst_off);
> - if (folio_test_highmem(src_folio) &&
> - chunk > PAGE_SIZE - offset_in_page(src_off))
> - chunk = PAGE_SIZE - offset_in_page(src_off);
> + if (folio_test_highmem(dst_folio) && chunk > rest_of_page(dst_off))
> + chunk = rest_of_page(dst_off);
> + if (folio_test_highmem(src_folio) && chunk > rest_of_page(src_off))
> + chunk = rest_of_page(src_off);
>
> To a point where I don't have to use my brains to decode them. I agree
> it's an easy math. It's just too bulky to my (and 9p guys too) taste.

The thing is, now I have to go lookup what on earth rest_of_page() does,
whereas PAGE_SIZE - offset_in_page(page) is immediately obvious. It's a
classic case of "oh let's add this helper to simplify things" which
really just makes it worse, because now you have to jump to the
definition of rest_of_page().

IOW, just no.

--
Jens Axboe