The IO_uring and block subsystem changes have been merged for the Linux 6.19 merge window with a few improvements worth highlighting this cycle.
The IO_uring merge brings several code clean-ups, support for mixed size SQEs, zero copy receive “zcrx” updates, and improved ring initialization. IO_uring also now supports getsockname() and getpeername().
With the block merge for Linux 6.19 catching my eye were improvements to the block layer peer-to-peer (P2P) DMA support. The P2P DMA work around block devices ended up being work pursued by NVIDIA. NVIDIA engineer Leon Romanovsky explained with the patch series:
“This patch series improves block layer and NVMe driver support for MMIO memory regions, particularly for peer-to-peer (P2P) DMA transfers that go through the host bridge.
The series addresses a critical gap where P2P transfers through the host bridge (PCI_P2PDMA_MAP_THRU_HOST_BRIDGE) were not properly marked as MMIO memory, leading to potential issues with:
– Inappropriate CPU cache synchronization operations on MMIO regions
– Incorrect DMA mapping/unmapping that doesn’t respect MMIO semantics
– Missing IOMMU configuration for MMIO memory handlingThis work is extracted from the larger DMA physical API improvement series and focuses specifically on block layer and NVMe requirements for MMIO memory support.”
In addition to the enhancements to the block layer P2P DMA support, Linux 6.19 block code also has improved its auto integrity code, speeds up polled I/O handling, fixes blk-throttle for SSD devices, support for caching zones, a variety of MD fixes, improved usage of per-CPU workqueues with Bcache, the block tracing code now supports zoned devices, and other improvements.
