On Tue, Nov 7, 2023 at 2:39 AM Matthew Wilcox (Oracle) wrote: > > This patch series does most of the page->folio conversions needed in > nilfs2. I haven't done the work to support large folios in nilfs2; > I don't know if that conversion will be worth the effort. There are > still a few page uses left, but the infrastructure isn't quite there to > get rid of them yet. > > Arguably, this is two separate series; the first takes care of the file > paths and the second takes care of directories. I've tried my best to > include large folio support in the directory code because it'll be needed > for large block size devices. It also tries to stay as close as possible > to the current ext2 code (so it also includes kmap_local support). > > These patches are only compile-tested. xfstests doesn't seem to know > about nilfs2. > > Matthew Wilcox (Oracle) (35): > nilfs2: Add nilfs_end_folio_io() > nilfs2: Convert nilfs_abort_logs to use folios > nilfs2: Convert nilfs_segctor_complete_write to use folios > nilfs2: Convert nilfs_forget_buffer to use a folio > nilfs2: Convert to nilfs_folio_buffers_clean() > nilfs2: Convert nilfs_writepage() to use a folio > nilfs2: Convert nilfs_mdt_write_page() to use a folio > nilfs2: Convert to nilfs_clear_folio_dirty() > nilfs2: Convert to __nilfs_clear_folio_dirty() > nilfs2: Convert nilfs_segctor_prepare_write to use folios > nilfs2: Convert nilfs_page_mkwrite() to use a folio > nilfs2: Convert nilfs_mdt_create_block to use a folio > nilfs2: Convert nilfs_mdt_submit_block to use a folio > nilfs2: Convert nilfs_gccache_submit_read_data to use a folio > nilfs2: Convert nilfs_btnode_create_block to use a folio > nilfs2: Convert nilfs_btnode_submit_block to use a folio > nilfs2: Convert nilfs_btnode_delete to use a folio > nilfs2: Convert nilfs_btnode_prepare_change_key to use a folio > nilfs2: Convert nilfs_btnode_commit_change_key to use a folio > nilfs2: Convert nilfs_btnode_abort_change_key to use a folio > nilfs2: Remove page_address() from nilfs_set_link > nilfs2: Remove page_address() from nilfs_add_link > nilfs2: Remove page_address() from nilfs_delete_entry > nilfs2: Return the mapped address from nilfs_get_page() > nilfs2: Pass the mapped address to nilfs_check_page() > nilfs2: Switch to kmap_local for directory handling > nilfs2: Add nilfs_get_folio() > nilfs2: Convert nilfs_readdir to use a folio > nilfs2: Convert nilfs_find_entry to use a folio > nilfs2: Convert nilfs_rename() to use folios > nilfs2: Convert nilfs_add_link() to use a folio > nilfs2: Convert nilfs_empty_dir() to use a folio > nilfs2: Convert nilfs_make_empty() to use a folio > nilfs2: Convert nilfs_prepare_chunk() and nilfs_commit_chunk() to > folios > nilfs2: Convert nilfs_page_bug() to nilfs_folio_bug() > > fs/nilfs2/btnode.c | 62 +++++------ > fs/nilfs2/dir.c | 248 ++++++++++++++++++++------------------------ > fs/nilfs2/file.c | 28 ++--- > fs/nilfs2/gcinode.c | 4 +- > fs/nilfs2/inode.c | 11 +- > fs/nilfs2/mdt.c | 23 ++-- > fs/nilfs2/namei.c | 33 +++--- > fs/nilfs2/nilfs.h | 20 ++-- > fs/nilfs2/page.c | 93 +++++++++-------- > fs/nilfs2/page.h | 12 +-- > fs/nilfs2/segment.c | 157 ++++++++++++++-------------- > 11 files changed, 338 insertions(+), 353 deletions(-) > > -- > 2.42.0 > Matthew, thank you so much for this hard work. Even if full support for large folios cannot be achieved at this time due to limitations in the nilfs2 implementation, I appreciate that you are moving forward with the conversion work that should be done. I haven't reviewed each patch yet, but at least this series can be built without problems in my environment too, and so far it is working fine including GC and stress tests. I will review all the patches, but since there are so many, I will not add LGTM replies to each one, but will only reply to those that have comments (if any). Many thanks, Ryusuke Konishi