[GIT PULL] iomap: bug fixes and doc improvements for 5.16-rc2

From: Darrick J. Wong
Date: Sat Nov 27 2021 - 15:06:33 EST


Hi Linus,

Please pull this branch containing a single iomap bug fix and a cleanup
for 5.16-rc2. The bug fix changes how iomap deals with reading from an
inline data region -- whereas the current code (incorrectly) lets the
iomap read iter try for more bytes after reading the inline region
(which zeroes the rest of the page!) and hopes the next iteration
terminates, we surveyed the inlinedata implementations and realized that
all inlinedata implementations also require that the inlinedata region
end at EOF, so we can simply terminate the read.

The second patch documents these assumptions in the code so that they're
not subtle implications anymore, and cleans up some of the grosser parts
of that function.

The branch merges cleanly against upstream as of a few minutes ago.
Please let me know if anything else strange happens during the merge
process.

--D

The following changes since commit 136057256686de39cc3a07c2e39ef6bc43003ff6:

Linux 5.16-rc2 (2021-11-21 13:47:39 -0800)

are available in the Git repository at:

git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/iomap-5.16-fixes-1

for you to fetch changes up to 5ad448ce2976f829d95dcae5e6e91f6686b0e4de:

iomap: iomap_read_inline_data cleanup (2021-11-24 10:15:47 -0800)

----------------------------------------------------------------
Fixes for 5.16-rc2:
- Fix an accounting problem where unaligned inline data reads can run
off the end of the read iomap iterator. iomap has historically
required that inline data mappings only exist at the end of a file,
though this wasn't documented anywhere.
- Document iomap_read_inline_data and change its return type to be
appropriate for the information that it's actually returning.

----------------------------------------------------------------
Andreas Gruenbacher (2):
iomap: Fix inline extent handling in iomap_readpage
iomap: iomap_read_inline_data cleanup

fs/iomap/buffered-io.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)