The patch below rewrites the direct write I/O completion path to avoid the use of ioends. Besides simplifying the code this will also allow us to make COW I/O a type of it's own for the buffer I/O path.