Hi all, this series removes the ->rw_page block_device_operation, which is an old and clumsy attempt at a simple read/write fast path for the block layer. It isn't actually used by the fastest block layer operations that we support (polled I/O through io_uring), but only used by the mpage buffered I/O helpers which are some of the slowest I/O we have and do not make any difference there at all, and zram which is a block device abused to duplicate the zram functionality. Given that zram is heavily used we need to make sure there is a good replacement for synchronous I/O, so this series adds a new flag for drivers that complete I/O synchronously and uses that flag to use on-stack bios and synchronous submission for them in the swap code. Diffstat: block/bdev.c | 78 ------------------ drivers/block/brd.c | 15 --- drivers/block/zram/zram_drv.c | 61 -------------- drivers/nvdimm/btt.c | 16 --- drivers/nvdimm/pmem.c | 24 ----- fs/mpage.c | 10 -- include/linux/blkdev.h | 12 +- mm/page_io.c | 182 ++++++++++++++++++++++-------------------- mm/swap.h | 9 -- mm/swapfile.c | 2 10 files changed, 114 insertions(+), 295 deletions(-)