Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 371098c6 authored by Al Viro's avatar Al Viro
Browse files

9p: switch ->writepage() to direct use of p9_client_write()



Don't mess with kmap() - just use ITER_BVEC.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 070b3656
Loading
Loading
Loading
Loading
+13 −22
Original line number Diff line number Diff line
@@ -161,41 +161,32 @@ static void v9fs_invalidate_page(struct page *page, unsigned int offset,

static int v9fs_vfs_writepage_locked(struct page *page)
{
	char *buffer;
	int retval, len;
	loff_t offset, size;
	mm_segment_t old_fs;
	struct v9fs_inode *v9inode;
	struct inode *inode = page->mapping->host;
	struct v9fs_inode *v9inode = V9FS_I(inode);
	loff_t size = i_size_read(inode);
	struct iov_iter from;
	struct bio_vec bvec;
	int err, len;

	v9inode = V9FS_I(inode);
	size = i_size_read(inode);
	if (page->index == size >> PAGE_CACHE_SHIFT)
		len = size & ~PAGE_CACHE_MASK;
	else
		len = PAGE_CACHE_SIZE;

	set_page_writeback(page);

	buffer = kmap(page);
	offset = page_offset(page);
	bvec.bv_page = page;
	bvec.bv_offset = 0;
	bvec.bv_len = len;
	iov_iter_bvec(&from, ITER_BVEC | WRITE, &bvec, 1, len);

	old_fs = get_fs();
	set_fs(get_ds());
	/* We should have writeback_fid always set */
	BUG_ON(!v9inode->writeback_fid);

	retval = v9fs_file_write_internal(inode,
					  v9inode->writeback_fid,
					  (__force const char __user *)buffer,
					  len, &offset, 0);
	if (retval > 0)
		retval = 0;
	set_page_writeback(page);

	p9_client_write(v9inode->writeback_fid, page_offset(page), &from, &err);

	set_fs(old_fs);
	kunmap(page);
	end_page_writeback(page);
	return retval;
	return err;
}

static int v9fs_vfs_writepage(struct page *page, struct writeback_control *wbc)