diff options
| -rw-r--r-- | fs/fuse/dev.c | 4 | ||||
| -rw-r--r-- | fs/fuse/file.c | 2 | ||||
| -rw-r--r-- | fs/fuse/inode.c | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index a5e516a40e7a..809c0f2f9942 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c | |||
| @@ -1742,7 +1742,6 @@ static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode, | |||
| 1742 | req->in.h.nodeid = outarg->nodeid; | 1742 | req->in.h.nodeid = outarg->nodeid; |
| 1743 | req->in.numargs = 2; | 1743 | req->in.numargs = 2; |
| 1744 | req->in.argpages = 1; | 1744 | req->in.argpages = 1; |
| 1745 | req->page_descs[0].offset = offset; | ||
| 1746 | req->end = fuse_retrieve_end; | 1745 | req->end = fuse_retrieve_end; |
| 1747 | 1746 | ||
| 1748 | index = outarg->offset >> PAGE_SHIFT; | 1747 | index = outarg->offset >> PAGE_SHIFT; |
| @@ -1757,6 +1756,7 @@ static int fuse_retrieve(struct fuse_conn *fc, struct inode *inode, | |||
| 1757 | 1756 | ||
| 1758 | this_num = min_t(unsigned, num, PAGE_SIZE - offset); | 1757 | this_num = min_t(unsigned, num, PAGE_SIZE - offset); |
| 1759 | req->pages[req->num_pages] = page; | 1758 | req->pages[req->num_pages] = page; |
| 1759 | req->page_descs[req->num_pages].offset = offset; | ||
| 1760 | req->page_descs[req->num_pages].length = this_num; | 1760 | req->page_descs[req->num_pages].length = this_num; |
| 1761 | req->num_pages++; | 1761 | req->num_pages++; |
| 1762 | 1762 | ||
| @@ -2077,8 +2077,10 @@ static ssize_t fuse_dev_splice_write(struct pipe_inode_info *pipe, | |||
| 2077 | 2077 | ||
| 2078 | ret = fuse_dev_do_write(fud, &cs, len); | 2078 | ret = fuse_dev_do_write(fud, &cs, len); |
| 2079 | 2079 | ||
| 2080 | pipe_lock(pipe); | ||
| 2080 | for (idx = 0; idx < nbuf; idx++) | 2081 | for (idx = 0; idx < nbuf; idx++) |
| 2081 | pipe_buf_release(pipe, &bufs[idx]); | 2082 | pipe_buf_release(pipe, &bufs[idx]); |
| 2083 | pipe_unlock(pipe); | ||
| 2082 | 2084 | ||
| 2083 | out: | 2085 | out: |
| 2084 | kvfree(bufs); | 2086 | kvfree(bufs); |
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index ffaffe18352a..a59c16bd90ac 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c | |||
| @@ -1782,7 +1782,7 @@ static bool fuse_writepage_in_flight(struct fuse_req *new_req, | |||
| 1782 | spin_unlock(&fc->lock); | 1782 | spin_unlock(&fc->lock); |
| 1783 | 1783 | ||
| 1784 | dec_wb_stat(&bdi->wb, WB_WRITEBACK); | 1784 | dec_wb_stat(&bdi->wb, WB_WRITEBACK); |
| 1785 | dec_node_page_state(page, NR_WRITEBACK_TEMP); | 1785 | dec_node_page_state(new_req->pages[0], NR_WRITEBACK_TEMP); |
| 1786 | wb_writeout_inc(&bdi->wb); | 1786 | wb_writeout_inc(&bdi->wb); |
| 1787 | fuse_writepage_free(fc, new_req); | 1787 | fuse_writepage_free(fc, new_req); |
| 1788 | fuse_request_free(new_req); | 1788 | fuse_request_free(new_req); |
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index 76baaa6be393..c2d4099429be 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
| @@ -628,6 +628,7 @@ void fuse_conn_init(struct fuse_conn *fc, struct user_namespace *user_ns) | |||
| 628 | get_random_bytes(&fc->scramble_key, sizeof(fc->scramble_key)); | 628 | get_random_bytes(&fc->scramble_key, sizeof(fc->scramble_key)); |
| 629 | fc->pid_ns = get_pid_ns(task_active_pid_ns(current)); | 629 | fc->pid_ns = get_pid_ns(task_active_pid_ns(current)); |
| 630 | fc->user_ns = get_user_ns(user_ns); | 630 | fc->user_ns = get_user_ns(user_ns); |
| 631 | fc->max_pages = FUSE_DEFAULT_MAX_PAGES_PER_REQ; | ||
| 631 | } | 632 | } |
| 632 | EXPORT_SYMBOL_GPL(fuse_conn_init); | 633 | EXPORT_SYMBOL_GPL(fuse_conn_init); |
| 633 | 634 | ||
| @@ -1162,7 +1163,6 @@ static int fuse_fill_super(struct super_block *sb, void *data, int silent) | |||
| 1162 | fc->user_id = d.user_id; | 1163 | fc->user_id = d.user_id; |
| 1163 | fc->group_id = d.group_id; | 1164 | fc->group_id = d.group_id; |
| 1164 | fc->max_read = max_t(unsigned, 4096, d.max_read); | 1165 | fc->max_read = max_t(unsigned, 4096, d.max_read); |
| 1165 | fc->max_pages = FUSE_DEFAULT_MAX_PAGES_PER_REQ; | ||
| 1166 | 1166 | ||
| 1167 | /* Used by get_root_inode() */ | 1167 | /* Used by get_root_inode() */ |
| 1168 | sb->s_fs_info = fc; | 1168 | sb->s_fs_info = fc; |
