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

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
...@@ -161,41 +161,32 @@ static void v9fs_invalidate_page(struct page *page, unsigned int offset, ...@@ -161,41 +161,32 @@ static void v9fs_invalidate_page(struct page *page, unsigned int offset,
static int v9fs_vfs_writepage_locked(struct page *page) 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 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) if (page->index == size >> PAGE_CACHE_SHIFT)
len = size & ~PAGE_CACHE_MASK; len = size & ~PAGE_CACHE_MASK;
else else
len = PAGE_CACHE_SIZE; len = PAGE_CACHE_SIZE;
set_page_writeback(page); bvec.bv_page = page;
bvec.bv_offset = 0;
buffer = kmap(page); bvec.bv_len = len;
offset = page_offset(page); 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 */ /* We should have writeback_fid always set */
BUG_ON(!v9inode->writeback_fid); BUG_ON(!v9inode->writeback_fid);
retval = v9fs_file_write_internal(inode, set_page_writeback(page);
v9inode->writeback_fid,
(__force const char __user *)buffer, p9_client_write(v9inode->writeback_fid, page_offset(page), &from, &err);
len, &offset, 0);
if (retval > 0)
retval = 0;
set_fs(old_fs);
kunmap(page);
end_page_writeback(page); end_page_writeback(page);
return retval; return err;
} }
static int v9fs_vfs_writepage(struct page *page, struct writeback_control *wbc) static int v9fs_vfs_writepage(struct page *page, struct writeback_control *wbc)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment