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
