I was trying to wear the had of an user today, and I don't see any sense on the Sync parameters.
I mean... why I would like to block on ACK, but not want a sync on disk?
If someone can bear loosing data on ACK, he can just use it async. If an user needs to guarantee the ACK, the user will need to block and sync.
So, IMHO block=true, and sync=false is just confusing and useless IMHO.
I suggest we get rid of them, and only keep the Block ones.