Skip to content

Commit

Permalink
9p: switch ->writepage() to direct use of p9_client_write()
Browse files Browse the repository at this point in the history
Don't mess with kmap() - just use ITER_BVEC.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Apr 12, 2015
1 parent 070b365 commit 371098c
Showing 1 changed file with 13 additions and 22 deletions.
35 changes: 13 additions & 22 deletions fs/9p/vfs_addr.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 371098c

Please sign in to comment.