This takes the approach from Dave, but adds a new flag instead of abusing the nowait one, and keeps a simpler calling convention for iomap_dio_rw. Changes since v3: - further comment improvements - micro-optimize an alignment check Changes since v2: - add another sanity check in __iomap_dio_rw - rename IOMAP_DIO_UNALIGNED to IOMAP_DIO_OVERWRITE_ONLY - use more consistent parameter naming - improve a few comments - cleanup an if statement Changes since v1: - rename the new flags - add an EOF check for subblock I/O - minor cleanups