Re: [PATCH mm-unstable] mm: clarify folio_set_compound_order() zero support

From: Matthew Wilcox
Date: Thu Dec 08 2022 - 17:06:09 EST


On Thu, Dec 08, 2022 at 01:58:20PM -0800, Sidhartha Kumar wrote:
> 5) improve the style of folio_set_order() by removing ifdefs from inside the
> function to doing
>
> #ifdef CONFIG_64BIT
> static inline void folio_set_order(struct folio *folio,
> unsigned int order)
> {
> VM_BUG_ON_FOLIO(!folio_test_large(folio), folio);
>
> folio->_folio_order = order;
> folio->_folio_nr_pages = order ? 1U << order : 0;
> }
> #else
> static inline void folio_set_order(struct folio *folio,
> unsigned int order)
> {
> VM_BUG_ON_FOLIO(!folio_test_large(folio), folio);
>
> folio->_folio_order = order;
> }
> #endif

While we usually prefer to put ifdefs outside the function, I don't
think that's justified in this case. I'd rather see a comment inside
the function like:

static inline void folio_set_order(struct folio *folio,
unsigned int order)
{
VM_BUG_ON_FOLIO(!folio_test_large(folio), folio);

folio->_folio_order = order;
#ifdef CONFIG_64BIT
/*
* When hugetlb dissolves a folio, we need to clear the tail
* page, rather than setting nr_pages to 1.
*/
folio->_folio_nr_pages = order ? 1U << order : 0;
#endif
}