On Wed, 5 Mar 2025, Zi Yan wrote:
On 5 Mar 2025, at 15:50, Hugh Dickins wrote:
(Historically, there was quite a lot of difficulty in getting the order of events in __split_huge_page_tail() to be safe: I wonder whether we shall see a crop of new weird bugs from these changes. I note that your loops advance forwards, whereas the old ones went backwards: but I don't have anything to say you're wrong. I think it's mainly a matter of how the first tail or two gets handled: which might be why you want to folio_set_order(folio, new_order) at the earliest opportunity.)
I am worried about that too. In addition, in __split_huge_page_tail(), page refcount is restored right after new tail folio split is done, whereas I needed to delay them until all new after-split folios are done, since non-uniform split is iterative and only the after-split folios NOT containing the split_at page will be released. These folios are locked and frozen after __split_folio_to_order() like the original folio. Maybe because there are more such locked frozen folios than before?
Sorry, I gave up trying to work out what you're asking me there. Let's assume I don't know the answer.
Hugh