Suppose an application writes 128 KiB to a file with a single system call. That does not mean the storage device receives one 128 KiB request.
The filesystem may split the data across several device regions. The device may limit request size, nearby requests may be merged, and the kernel may reorder or dispatch multiple requests in parallel.
The kernel component that coordinates this work is the block layer.
It sits between higher-level storage subsystems and block-device drivers, turning logical block operations into requests that match the device’s limits and queueing model.
The block layer turns storage operations into device-ready, schedulable requests.
This explains why one application I/O can become several device commands, why requests may complete out of order, and how Linux efficiently feeds modern storage devices such as NVMe drives.
This chapter follows requests through the Linux block layer, explaining device limits, splitting, merging, reordering, multi-queue dispatch, I/O schedulers, queue inspection, and workload-dependent scheduler selection.