lift the xfs writepage code into iomap v2

From: Christoph Hellwig
Date: Thu Jun 27 2019 - 06:48:47 EST


Hi all,

this series cleans up the xfs writepage code and then lifts it to
fs/iomap.c so that it could be use by other file system. I've been
wanting to this for a while so that I could eventually convert gfs2
over to it, but I never got to it. Now Damien has a new zonefs
file system for semi-raw access to zoned block devices that would
like to use the iomap code instead of reinventing it, so I finally
had to do the work.

This new version should have addressed all comments from the review,
except that I haven't split iomap.c, which is a little too invasive
with other pending changes to the file. I do however offer to submit
a split right at the end of the merge window when it is least invasive.

Changes since v1:
- rebased to the latest xfs for-next tree
- keep the preallocated transactions for size updates
- rename list_pop to list_pop_entry and related cleanups
- better document the nofs context handling
- document that the iomap tracepoints are not a stable API