I have never seen such issues before. I am not sure if I have ever tested the same scenario as well. Can you please let us know what you describe as " it does not work correctly" situation? Does WriteBlock function never return, or any error code? Or do you see different data when you do read following the write?
Actually there was no error message or similar, all API methods conclude successfully, FXY3 works without exceptions. I just observe wrong data in the concerned memory page when reading it out later. What I observe is that my bytes just have not been written to the page or worse, the whole page has been set to 0x00 when writing back.
If there is no restriction in read-modify-write access of the same eMMC block, I think it could be some threading issue. Is there a way to make sure a DMA (which runs in a different thread) did really completely terminate its task (besides waiting for CyU3PDmaChannelWaitForRecvBuffer, CyU3PDmaChannelWaitForCompletion indefinitely, i.e. CYU3P_WAIT_FOREVER)?
The fact that it works well with the waiting period and in case I step through in the debugger tells me it must be something in that direction.