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

Commit fb53b309 authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds
Browse files

smbfs: convert to new aops

parent 4899f9c8
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -292,29 +292,45 @@ out:
 * 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,
};

/*