On Fri, 16 May 2025 14:39:43 +0200 David Hildenbrand <david@xxxxxxxxxx> wrote: > From patch #3: > > " > Currently, starting a PV VM on an iomap-based filesystem with large > folio support, such as XFS, will not work. We'll be stuck in > unpack_one()->gmap_make_secure(), because we can't seem to make progress > splitting the large folio. > > The problem is that we require a writable PTE but a writable PTE under such > filesystems will imply a dirty folio. > > So whenever we have a writable PTE, we'll have a dirty folio, and dirty > iomap folios cannot currently get split, because > split_folio()->split_huge_page_to_list_to_order()->filemap_release_folio() > will fail in iomap_release_folio(). > > So we will not make any progress splitting such large folios. > " > > Let's fix one related problem during unpack first, to then handle such > folios by triggering writeback before immediately trying to split them > again. > > This makes it work on XFS with large folios again. > > Long-term, we should cleanly supporting splitting such folios even > without writeback, but that's a bit harder to implement and not a quick > fix. picked for 6.16, I think it will survive the CI without issues, since I assume you tested this thoroughly > > Cc: Christian Borntraeger <borntraeger@xxxxxxxxxxxxx> > Cc: Janosch Frank <frankja@xxxxxxxxxxxxx> > Cc: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > Cc: David Hildenbrand <david@xxxxxxxxxx> > Cc: Heiko Carstens <hca@xxxxxxxxxxxxx> > Cc: Vasily Gorbik <gor@xxxxxxxxxxxxx> > Cc: Alexander Gordeev <agordeev@xxxxxxxxxxxxx> > Cc: Sven Schnelle <svens@xxxxxxxxxxxxx> > Cc: Thomas Huth <thuth@xxxxxxxxxx> > Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> > Cc: Zi Yan <ziy@xxxxxxxxxx> > Cc: Sebastian Mitterle <smitterl@xxxxxxxxxx> > > David Hildenbrand (3): > s390/uv: don't return 0 from make_hva_secure() if the operation was > not successful > s390/uv: always return 0 from s390_wiggle_split_folio() if successful > s390/uv: improve splitting of large folios that cannot be split while > dirty > > arch/s390/kernel/uv.c | 85 ++++++++++++++++++++++++++++++++++++------- > 1 file changed, 72 insertions(+), 13 deletions(-) > > > base-commit: 088d13246a4672bc03aec664675138e3f5bff68c