Changes for 4.19:
- iomap: support inline data, page done callbacks, and partial dio
  writes to support gfs2
- iomap: add library functions for page cache reads and writes in
  preparation to remove buffer heads from xfs.
- Use extent maps to track pagecache page status instead of bufferhead
  state.
- Refactor pagecache read and write paths to use the new iomap library
  functions, which enable us to drop the old bufferhead code for
  pagesize == blocksize filesystems.
- Set up parallel per-block-per-page metadata to track subpage
  information that was tracked by buffer heads, which enables us to drop
  the old bufferhead code for pagesize > blocksize filesystems.
- Tie a deferred ops control structure to a transaction so that we can
  take advantage of an upper-level dfops without having to plumb pointer
  passing through the code.
- Refactor the deferred ops code to track deferred ops as part of the
  transaction structure (instead of as a separate data structure) so
  that we can simplify the scoping rules around defer_ops.
- Refactor twisty delwri buffer submission code to avoid deadlocks.
- Shorten and fix indenting problems in the scrub code.
- Detect obviously bad summary counts at mount and fix them.
- Directly associate deferred ops control structure with a transaction
  so that callers no longer have to manage it themselves.
- Remove a couple of IRIX-era inode macros.
- Remove the long-deprecated 'barrier' and 'nobarrier' mount options.
- Clean up the inode fork structure a bit.
- Various fixes and cleanups.
xfs: introduce a new xfs_inode_has_cow_data helper

We have a few places that already check if an inode has actual data in
the COW fork to avoid work on reflink inodes that do not actually have
outstanding COW blocks.  There are a few more places that can avoid
working if doing the same check, so add a documented helper for this
condition and use it in all places where it makes sense.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
6 files changed