Last week the block subsystem and IO_uring updates were merged for the Linux 6.18 kernel with a few items to draw attention to.
Via the Multiple Device “MD” software RAID support is now a new lockless bitmap option in Linux 6.18. Huawei engineer Yu Kuai led the work on this MD lockless bitmap code and explained with the patch series:
“Redundant data is used to enhance data fault tolerance, and the storage method for redundant data vary depending on the RAID levels. And it’s important to maintain the consistency of redundant data.
Bitmap is used to record which data blocks have been synchronized and which ones need to be resynchronized or recovered. Each bit in the bitmap represents a segment of data in the array. When a bit is set, it indicates that the multiple redundant copies of that data segment may not be consistent. Data synchronization can be performed based on the bitmap after power failure or readding a disk. If there is no bitmap, a full disk synchronization is required.
#### Key Features
– IO fastpath is lockless, if user issues lots of write IO to the same bitmap bit in a short time, only the first write have additional overhead to update bitmap bit, no additional overhead for the following writes;
– support only resync or recover written data, means in the case creating new array or replacing with a new disk, there is no need to do a full disk resync/recovery;”
In addition to that lockless bitmap support for MD, the block updates for Linux 6.18 include routine NVMe updates, more Rust block changes, cleaning up floppy code, improved P2P support, and other enhancements.
Separately was the IO_uring pull with now storing ring-provided buffers locally for the users, supporting mixed CQE sizes in the same ring, new helpers for async data management, support for multi-shot with uring_cmd, zero copy receive improvements, and initial support for ring feature querying.