Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse
Pull fuse fixes from Miklos Szeredi: "This fixes bugs in zero-copy splice to the fuse device" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse: fuse: explicitly set /dev/fuse file's private_data fuse: set stolen page uptodate fuse: notify: don't move pages
This commit is contained in:
commit
1e744c938d
@ -890,8 +890,8 @@ static int fuse_try_move_page(struct fuse_copy_state *cs, struct page **pagep)
|
||||
|
||||
newpage = buf->page;
|
||||
|
||||
if (WARN_ON(!PageUptodate(newpage)))
|
||||
return -EIO;
|
||||
if (!PageUptodate(newpage))
|
||||
SetPageUptodate(newpage);
|
||||
|
||||
ClearPageMappedToDisk(newpage);
|
||||
|
||||
@ -1353,6 +1353,17 @@ static ssize_t fuse_dev_do_read(struct fuse_conn *fc, struct file *file,
|
||||
return err;
|
||||
}
|
||||
|
||||
static int fuse_dev_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
/*
|
||||
* The fuse device's file's private_data is used to hold
|
||||
* the fuse_conn(ection) when it is mounted, and is used to
|
||||
* keep track of whether the file has been mounted already.
|
||||
*/
|
||||
file->private_data = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t fuse_dev_read(struct kiocb *iocb, const struct iovec *iov,
|
||||
unsigned long nr_segs, loff_t pos)
|
||||
{
|
||||
@ -1797,6 +1808,9 @@ copy_finish:
|
||||
static int fuse_notify(struct fuse_conn *fc, enum fuse_notify_code code,
|
||||
unsigned int size, struct fuse_copy_state *cs)
|
||||
{
|
||||
/* Don't try to move pages (yet) */
|
||||
cs->move_pages = 0;
|
||||
|
||||
switch (code) {
|
||||
case FUSE_NOTIFY_POLL:
|
||||
return fuse_notify_poll(fc, size, cs);
|
||||
@ -2217,6 +2231,7 @@ static int fuse_dev_fasync(int fd, struct file *file, int on)
|
||||
|
||||
const struct file_operations fuse_dev_operations = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = fuse_dev_open,
|
||||
.llseek = no_llseek,
|
||||
.read = do_sync_read,
|
||||
.aio_read = fuse_dev_read,
|
||||
|
Loading…
Reference in New Issue
Block a user