Hi folks, This is a rework of my original patch posted here: https://lore.kernel.org/linux-xfs/20210519010733.449999-1-david@xxxxxxxxxxxxx/ and combines the cleanups proposed by Christoph in this patchset: https://lore.kernel.org/linux-xfs/20210519190900.320044-1-hch@xxxxxx/ THe code largely ends up in the same place and structure, just takes a less convoluted route to get there. The first two patches are refactoring buffer memory allocation and converting the uncached buffer path to use the same page allocation path, followed by converting the page allocation path to use bulk allocation. The rest of the patches are then consolidation of the page allocation and freeing code to simplify the code and remove a chunk of unnecessary abstraction. This largely follows the changes the Christoph made. This passes fstests on default settings, and mostly passes with a directory block size of 64kB (16 pages bulk allocation at a time). THere are recent regressions in 64kB directory block functionality in 5.13-rc1 - none of which appear to be a result of this patch set so I'm posting it for review anyway. Cheers, Dave.