Reading and writing are less symmetric than you (probably) think
Summary
This blog post explores the asymmetry between read and write buffering in IO operations, focusing on how buffering layers, block devices, and system calls interact. It explains why reads tend to report errors earlier in the pipeline while writes can delay errors and data reaching storage, and it highlights practical considerations like fsync and the guarantees provided by different storage layers.