On 10/23/25 05:05, Zi Yan wrote:
folio split clears PG_has_hwpoisoned, but the flag should be preserved in after-split folios containing pages with PG_hwpoisoned flag if the folio is split to >0 order folios. Scan all pages in a to-be-split folio to determine which after-split folios need the flag.
An alternatives is to change PG_has_hwpoisoned to PG_maybe_hwpoisoned to avoid the scan and set it on all after-split folios, but resulting false positive has undesirable negative impact. To remove false positive, caller of folio_test_has_hwpoisoned() and folio_contain_hwpoisoned_page() needs to do the scan. That might be causing a hassle for current and future callers and more costly than doing the scan in the split code. More details are discussed in [1].
This issue can be exposed via:
- splitting a has_hwpoisoned folio to >0 order from debugfs interface;
Is it easy to add a selftest in split_huge_page_test for this scenario?
- truncating part of a has_hwpoisoned folio in truncate_inode_partial_folio().
-- Pankaj