Hello, I have been unable to find the answer to the following questions regarding the semantics of block devices: 1) I noticed the concepts of "logical block size", "physical block size", and "soft block size" (cf. blkdev_ioctl() in block/ioctl.c). The meanings of the first two are documented in blk_queue_logical_block_size() and blk_queue_physical_block_size() in block/blk-settings.c . However, what is the soft block size used for? Is it historical and superseded by the logical and physical block sizes? 2) If two concurrent writes requests (i.e., both are submitted by some client and only then do both complete) to the same block device intersect, are there any guarantees regarding the content of the affected region after the writes complete? What about concurrent writes to the same logical block? And physical block? 3) Are there any guarantees regarding the content of a logical block that was being written (i.e., for which a write request was submitted but not yet completed) when a crash occurred? What about a write to a physical block? Also, what if the write was a FUA write? Is someone able to clarify me on this? I apologize if these questions are too basic for this mailing list or if I missed any relevant documentation. Thanks, Alberto Faria