I see what you mean about cancellation and timeouts-- so far this
definition isn't enough to support them.

Thinking of xen blkfronts, in normal kernels there is a timeout in the
generic block layer (Linux/windows) which, if triggered, is often game
over: best case the disk goes read/only (not good if it's root) and worst
case windows bluescreens if there was a pagefile write outstanding. I
figured we could do better by simply blocking forever! :) Unfortunately the
shared ring protocol doesn't have a means of cancellation either -- if you
walk away then either the write will complete or not, you can't find out
and you can't remove the request. When writing to a Unix block device file,
if the disk stops responding does your process end up in 'disk sleep'? I've
a feeling that (on Linux at least) you can't even 'kill -9' such processes,
they're annoyingly immortal. Perhaps things work better with network
sockets than disk devices/files?