Commit e25ba8cb authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Darrick J. Wong
Browse files

iomap: Convert iomap_write_end types



iomap_write_end cannot return an error, so switch it to return
size_t instead of int and remove the error checking from the callers.
Also convert the arguments to size_t from unsigned int, in case anyone
ever wants to support a page size larger than 2GB.

Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 0fb2d720
Loading
Loading
Loading
Loading
+12 −19
Original line number Diff line number Diff line
@@ -663,9 +663,8 @@ iomap_set_page_dirty(struct page *page)
}
EXPORT_SYMBOL_GPL(iomap_set_page_dirty);

static int
__iomap_write_end(struct inode *inode, loff_t pos, unsigned len,
		unsigned copied, struct page *page)
static size_t __iomap_write_end(struct inode *inode, loff_t pos, size_t len,
		size_t copied, struct page *page)
{
	flush_dcache_page(page);

@@ -687,9 +686,8 @@ __iomap_write_end(struct inode *inode, loff_t pos, unsigned len,
	return copied;
}

static int
iomap_write_end_inline(struct inode *inode, struct page *page,
		struct iomap *iomap, loff_t pos, unsigned copied)
static size_t iomap_write_end_inline(struct inode *inode, struct page *page,
		struct iomap *iomap, loff_t pos, size_t copied)
{
	void *addr;

@@ -705,13 +703,14 @@ iomap_write_end_inline(struct inode *inode, struct page *page,
	return copied;
}

static int
iomap_write_end(struct inode *inode, loff_t pos, unsigned len, unsigned copied,
		struct page *page, struct iomap *iomap, struct iomap *srcmap)
/* Returns the number of bytes copied.  May be 0.  Cannot be an errno. */
static size_t iomap_write_end(struct inode *inode, loff_t pos, size_t len,
		size_t copied, struct page *page, struct iomap *iomap,
		struct iomap *srcmap)
{
	const struct iomap_page_ops *page_ops = iomap->page_ops;
	loff_t old_size = inode->i_size;
	int ret;
	size_t ret;

	if (srcmap->type == IOMAP_INLINE) {
		ret = iomap_write_end_inline(inode, page, iomap, pos, copied);
@@ -790,11 +789,8 @@ iomap_write_actor(struct inode *inode, loff_t pos, loff_t length, void *data,

		copied = iov_iter_copy_from_user_atomic(page, i, offset, bytes);

		status = iomap_write_end(inode, pos, bytes, copied, page, iomap,
		copied = iomap_write_end(inode, pos, bytes, copied, page, iomap,
				srcmap);
		if (unlikely(status < 0))
			break;
		copied = status;

		cond_resched();

@@ -868,11 +864,8 @@ iomap_unshare_actor(struct inode *inode, loff_t pos, loff_t length, void *data,

		status = iomap_write_end(inode, pos, bytes, bytes, page, iomap,
				srcmap);
		if (unlikely(status <= 0)) {
		if (WARN_ON_ONCE(status == 0))
			return -EIO;
			return status;
		}

		cond_resched();