On 9 Jan 2026, at 8:26, David Hildenbrand (Red Hat) wrote:

> On 1/9/26 14:19, David Hildenbrand (Red Hat) wrote:
>> On 1/9/26 09:54, Francois Dugast wrote:
>>> From: Matthew Brost <[email protected]>
>>>
>>> Add folio_split_unref helper which splits an unreferenced folio
>>
>> split_unref reads like "split and unref".
>>
>> You probably want to call this something like "folio_split_frozen" ?
>>
>> The very definition of "frozen" is "refcount = 0 ", so you can simplify
>> the documentation.
>>
>> Are the folios you want to pass in there completely unused (-> free) or
>> might they still be in use (e.g., migration entries point at them during
>> folio split)
>>
>> So I am not sure yet if this should be "folio_split_frozen()" or
>> "folio_split_freed()" or sth like that.
>>
>> I'm not CCed on the other patches in the series or the cover letter, so
>> I don't see the context.
>>
>
> Ah, I was CCed on #3 where we call this function on folios that are getting 
> freed.
>
> In that case it would be acceptable to initialize folio->mapping (and 
> folio->index?) of the split folios. Do we also have to initialize 
> folio->flags, folio->private etc?
>
> See __split_huge_page_tail().
>
> folio_split_freed() would likely be best, because then it is clearer that 
> there is absolutely no state to copy from the large folio.

Yes, basically, we do not have a reverse function of prep_compound_page() and
open codes the reverse process in free_pages_prepare(). For zone devices,
zone_device_page_init() calls prep_compound_page() to form a folio but
free_zone_device_folio() never does the reverse. FS DAX has its own
dax_folio_put() to do it. Alistair suggested to come up with a helper
function for both FS DAX and free_zone_device_folio().

Maybe free_zone_device_folio_prepare() is better. And put it in mm/memremap.c.

>
>> You should describe in this patch here in which context the function is
>> supposed to be used in later commits.
>
> -- 
> Cheers
>
> David


Best Regards,
Yan, Zi

Reply via email to