Commit 5ad448ce authored by Andreas Gruenbacher's avatar Andreas Gruenbacher Committed by Darrick J. Wong
Browse files

iomap: iomap_read_inline_data cleanup



Change iomap_read_inline_data to return 0 or an error code; this
simplifies the callers.  Add a description.

Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
[djwong: document the return value of iomap_read_inline_data explicitly]
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent d8af404f
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -205,7 +205,16 @@ 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.
 * Returns zero for success to complete the read, or the usual negative errno.
 */
static int iomap_read_inline_data(const struct iomap_iter *iter,
		struct page *page)
{
	const struct iomap *iomap = iomap_iter_srcmap(iter);
@@ -214,7 +223,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 +240,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 +265,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 +591,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,