I am wondering whether standard POSIX write-calls (with blocking I/O) do block until the DMA device is done transferring the data to the disk or only wait until the necessary information about the memory addresses of the data are transferred to the DMA device?
I have executed tests with various buffer sizes and noticed that, when writing them down, the write()-call takes significantly more time with growing buffer sizes. That's why I am assuming that POSIX write() even blocks until the whole file transfer is done.