I am writing a Linux block device driver that receives requests via a function registered with blk_init_queue()
.
My hardware device reorders requests and as such to avoid read-after-write conflicts it is required to wait for the completion of write(lba x)
before issuing read(lba x)
.
My question: Does the Linux block layer keep track of RaW conflicts and it will not issue read(lba x)
until it has received a request completion (via __blk_end_request_all(req r)
) for a preceding write(lba x)
, or do I have to do that in my driver?