On Wed, Nov 17, 2021 at 11:32:02AM +0100, Andreas Gruenbacher wrote: > Change iomap_read_inline_data to return 0 or an error code; this > simplifies the callers. Add a description. > > Signed-off-by: Andreas Gruenbacher <agruenba@xxxxxxxxxx> Looks good, thank you for cleaning this up for me! Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > --- > fs/iomap/buffered-io.c | 30 ++++++++++++++---------------- > 1 file changed, 14 insertions(+), 16 deletions(-) > > diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c > index fe10d8a30f6b..f1bc9a35184d 100644 > --- a/fs/iomap/buffered-io.c > +++ b/fs/iomap/buffered-io.c > @@ -205,7 +205,15 @@ struct iomap_readpage_ctx { > struct readahead_control *rac; > }; > > -static loff_t iomap_read_inline_data(const struct iomap_iter *iter, > +/** > + * iomap_read_inline_data - copy inline data into the page cache > + * @iter: iteration structure > + * @page: page to copy to > + * > + * Copy the inline data in @iter into @page and zero out the rest of the page. > + * Only a single IOMAP_INLINE extent is allowed at the end of each file. > + */ > +static int iomap_read_inline_data(const struct iomap_iter *iter, > struct page *page) > { > const struct iomap *iomap = iomap_iter_srcmap(iter); > @@ -214,7 +222,7 @@ static loff_t iomap_read_inline_data(const struct iomap_iter *iter, > void *addr; > > if (PageUptodate(page)) > - return PAGE_SIZE - poff; > + return 0; > > if (WARN_ON_ONCE(size > PAGE_SIZE - poff)) > return -EIO; > @@ -231,7 +239,7 @@ static loff_t iomap_read_inline_data(const struct iomap_iter *iter, > memset(addr + size, 0, PAGE_SIZE - poff - size); > kunmap_local(addr); > iomap_set_range_uptodate(page, poff, PAGE_SIZE - poff); > - return PAGE_SIZE - poff; > + return 0; > } > > static inline bool iomap_block_needs_zeroing(const struct iomap_iter *iter, > @@ -256,13 +264,8 @@ static loff_t iomap_readpage_iter(const struct iomap_iter *iter, > unsigned poff, plen; > sector_t sector; > > - if (iomap->type == IOMAP_INLINE) { > - loff_t ret = iomap_read_inline_data(iter, page); > - > - if (ret < 0) > - return ret; > - return 0; > - } > + if (iomap->type == IOMAP_INLINE) > + return iomap_read_inline_data(iter, page); > > /* zero post-eof blocks as the page may be mapped */ > iop = iomap_page_create(iter->inode, page); > @@ -587,15 +590,10 @@ static int __iomap_write_begin(const struct iomap_iter *iter, loff_t pos, > static int iomap_write_begin_inline(const struct iomap_iter *iter, > struct page *page) > { > - int ret; > - > /* needs more work for the tailpacking case; disable for now */ > if (WARN_ON_ONCE(iomap_iter_srcmap(iter)->offset != 0)) > return -EIO; > - ret = iomap_read_inline_data(iter, page); > - if (ret < 0) > - return ret; > - return 0; > + return iomap_read_inline_data(iter, page); > } > > static int iomap_write_begin(const struct iomap_iter *iter, loff_t pos, > -- > 2.31.1 >