iomap infrastructure and multipage writes V4

Christoph Hellwig
2016-05-09T08:47:48Z

This series add a new file system I/O path that uses the iomap structure
introduced for the pNFS support and support multi-page buffered writes.

This was first started by Dave Chinner a long time ago, then I did beat
it into shape for production runs in a very constrained ARM NAS
enviroment for Tuxera almost as long ago, and now half a dozen rewrites
later it's back.

The basic idea is to avoid the per-block get_blocks overhead
and make use of extents in the buffered write path by iterating over
them instead.

Note that patch 1 conflicts with Vishals dax error handling series.
It would be great to have a stable branch with it so that both the
XFS and nvdimm tree could pull it in before the other changes in this
area.

Changes since V3:
- fix DAX based zeroing
- Reviews and trivial fixes from Bob

Changes since V2:
- fix the range for delalloc punches after failed writes
- updated some changelogs

Chances since V1:
- add support for fiemap
- fix a test fail on 1k block sizes
- prepare for 64-bit length, this will be used in a follow on patchset