[PATCH 00/15] ubifs folio conversion

Matthew Wilcox (Oracle)
2024-01-20T23:08:47Z

This patchset converts ubifs to use folios throughout. I made some
attempt to support large folios, but more work definitely needs to be
done before it can be enabled. It's not clear to me whether it's worth
doing, so I've left that for you ;-)

The first patch fixes a misplaced call to SetPageUptodate which has been
with us since the initial merge of ubifs. It looks to be a pretty hard
race to hit, which is why it probably hasn't affected anyone.

With my usual test config, this saves about 2kB of kernel text (almost
1%). Some functions shrink more than others, eg ubifs_write_begin
reduces by almost a third. YMMV with different configs.

I've done a few other updates while I'm in here; eg setting/clearing
PageError is pointless because the VFS doesn't use it and ubifs doesn't
test it. And we're phasing out use of PagePrivate / folio_test_private()
in favour of just testing whether folio->private is set.

I ran this through xfstests and it didn't seem any worse.

Matthew Wilcox (Oracle) (15):
ubifs: Set page uptodate in the correct place
ubifs: Convert from writepage to writepages
ubifs: Convert ubifs_writepage to use a folio
ubifs: Use a folio in do_truncation()
ubifs: Convert do_writepage() to take a folio
ubifs: Convert ubifs_vm_page_mkwrite() to use a folio
ubifs: Convert write_begin_slow() to use a folio
ubifs: Convert ubifs_write_begin() to use a folio
ubifs: Convert ubifs_write_end() to use a folio
ubifs: Convert do_readpage() to take a folio
ubifs: Convert allocate_budget() to work on a folio
ubifs: Convert cancel_budget() to take a folio
ubifs: Pass a folio into ubifs_bulk_read() and ubifs_do_bulk_read()
ubifs: Use a folio in ubifs_do_bulk_read()
ubifs: Convert populate_page() to take a folio

Documentation/mm/page_cache.rst | 10 +
fs/ubifs/file.c | 443 ++++++++++++++++----------------
2 files changed, 232 insertions(+), 221 deletions(-)

--
2.43.0