buffered writes without buffer heads in xfs and iomap v4

Christoph Hellwig
2018-05-30T10:00:18Z

Hi all,

this series adds support for buffered writes without buffer heads to
the iomap and XFS code.

For now this series only contains support for block size == PAGE_SIZE,
with the 4k support split into a separate series.

A git tree is available at:

git://git.infradead.org/users/hch/xfs.git xfs-iomap-write.4

Gitweb:

http://git.infradead.org/users/hch/xfs.git/shortlog/refs/heads/xfs-iomap-write.4

Changes since v3:
- iterate backwards in xfs_bmap_punch_delalloc_range
- remove the cow_valid variable in xfs_reflink_trim_irec_to_next_cow
- additional trivial xfs_map_blocks simplifications
- split the read side into a separate prep series
- moved the SEEK_HOLE/DATA patches not strictly required out of the series

Changes since v2:
- minor page_seek_hole_data tweaks
- don't read data entirely covered by the write operation in write_begin
- fix zeroing on write_begin I/O failure
- remove iomap_block_needs_zeroing to make the code more clear
- update comments on __do_page_cache_readahead

Changes since v1:
- fix the iomap_readpages error handling
- use unsigned file offsets in a few places to avoid arithmetic overflows
- allocate a iomap_page in iomap_page_mkwrite to fix generic/095
- improve a few comments
- add more asserts
- warn about truncated block numbers from ->bmap
- new patch to change the __do_page_cache_readahead return value to
unsigned int
- remove an incorrectly added empty line
- make inline data an explicit iomap type instead of a flag
- add a IOMAP_F_BUFFER_HEAD flag to force use of buffers heads for gfs2,
and keep the basic buffer head infrastructure around for now.