提交 fb53b309 编写于 作者: N Nick Piggin 提交者: Linus Torvalds

smbfs: convert to new aops

Signed-off-by: NNick Piggin <npiggin@suse.de>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 4899f9c8
......@@ -292,29 +292,45 @@ smb_file_splice_read(struct file *file, loff_t *ppos,
* If the writer ends up delaying the write, the writer needs to
* increment the page use counts until he is done with the page.
*/
static int smb_prepare_write(struct file *file, struct page *page,
unsigned offset, unsigned to)
static int smb_write_begin(struct file *file, struct address_space *mapping,
loff_t pos, unsigned len, unsigned flags,
struct page **pagep, void **fsdata)
{
pgoff_t index = pos >> PAGE_CACHE_SHIFT;
*pagep = __grab_cache_page(mapping, index);
if (!*pagep)
return -ENOMEM;
return 0;
}
static int smb_commit_write(struct file *file, struct page *page,
unsigned offset, unsigned to)
static int smb_write_end(struct file *file, struct address_space *mapping,
loff_t pos, unsigned len, unsigned copied,
struct page *page, void *fsdata)
{
int status;
unsigned offset = pos & (PAGE_CACHE_SIZE - 1);
status = -EFAULT;
lock_kernel();
status = smb_updatepage(file, page, offset, to-offset);
status = smb_updatepage(file, page, offset, copied);
unlock_kernel();
if (!status) {
if (!PageUptodate(page) && copied == PAGE_CACHE_SIZE)
SetPageUptodate(page);
status = copied;
}
unlock_page(page);
page_cache_release(page);
return status;
}
const struct address_space_operations smb_file_aops = {
.readpage = smb_readpage,
.writepage = smb_writepage,
.prepare_write = smb_prepare_write,
.commit_write = smb_commit_write
.write_begin = smb_write_begin,
.write_end = smb_write_end,
};
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册