On 1/9/26 15:30, Zi Yan wrote:
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.
That would be even better, if we can limit this completely to zone_device.
--
Cheers
David