Hi all, this is another spin on converting the XFS buffer cache to use folios and generally simplify the memory allocation in it. It is based on Dave's last folio series (which itself had pulled in bits from my earlier vmalloc series). It converts the backing memory allocation for all large buffers that are power of two sized to large folios, converts > PAGE_SIZE but not power of two allocations to vmalloc instead of vm_map_ram and generally cleans up a lot of code around the memory allocation and reduces the size of the xfs_buf structure by removing the embedded pages array and pages pointer. I've benchmarked it using buffer heavy workloads, most notable fs_mark run on null_blk without any fsync or O_SYNC to stress the buffer memory allocator. The performance results are disappointingly boring unfortunately: for 4k directory block I see no significant change (although the variance for both loads is very high to start with), and for 64k directory block I see a minimal 1-2% gain that is barely about the variance. So based on the performance results alone I would not propose this series, but I think it actually cleans the code up very nicely. Diffstat: libxfs/xfs_ialloc.c | 2 libxfs/xfs_inode_buf.c | 2 scrub/inode_repair.c | 3 xfs_buf.c | 371 +++++++++++++++++-------------------------------- xfs_buf.h | 25 +-- xfs_buf_item.c | 114 --------------- xfs_buf_item_recover.c | 8 - xfs_buf_mem.c | 43 +---- xfs_buf_mem.h | 6 xfs_inode.c | 3 xfs_trace.h | 4 11 files changed, 164 insertions(+), 417 deletions(-)