aboutsummaryrefslogtreecommitdiffstats
path: root/fs/splice.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 20:51:54 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-05-01 20:51:54 -0400
commit20b4fb485227404329e41ad15588afad3df23050 (patch)
treef3e099f0ab3da8a93b447203e294d2bb22f6dc05 /fs/splice.c
parentb9394d8a657cd3c064fa432aa0905c1b58b38fe9 (diff)
parentac3e3c5b1164397656df81b9e9ab4991184d3236 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull VFS updates from Al Viro, Misc cleanups all over the place, mainly wrt /proc interfaces (switch create_proc_entry to proc_create(), get rid of the deprecated create_proc_read_entry() in favor of using proc_create_data() and seq_file etc). 7kloc removed. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (204 commits) don't bother with deferred freeing of fdtables proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h proc: Make the PROC_I() and PDE() macros internal to procfs proc: Supply a function to remove a proc entry by PDE take cgroup_open() and cpuset_open() to fs/proc/base.c ppc: Clean up scanlog ppc: Clean up rtas_flash driver somewhat hostap: proc: Use remove_proc_subtree() drm: proc: Use remove_proc_subtree() drm: proc: Use minor->index to label things, not PDE->name drm: Constify drm_proc_list[] zoran: Don't print proc_dir_entry data in debug reiserfs: Don't access the proc_dir_entry in r_open(), r_start() r_show() proc: Supply an accessor for getting the data from a PDE's parent airo: Use remove_proc_subtree() rtl8192u: Don't need to save device proc dir PDE rtl8187se: Use a dir under /proc/net/r8180/ proc: Add proc_mkdir_data() proc: Move some bits from linux/proc_fs.h to linux/{of.h,signal.h,tty.h} proc: Move PDE_NET() to fs/proc/proc_net.c ...
Diffstat (limited to 'fs/splice.c')
-rw-r--r--fs/splice.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/splice.c b/fs/splice.c
index 6b485b8753bd..e6b25598c8c4 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -219,7 +219,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
219 page_nr++; 219 page_nr++;
220 ret += buf->len; 220 ret += buf->len;
221 221
222 if (pipe->inode) 222 if (pipe->files)
223 do_wakeup = 1; 223 do_wakeup = 1;
224 224
225 if (!--spd->nr_pages) 225 if (!--spd->nr_pages)
@@ -829,7 +829,7 @@ int splice_from_pipe_feed(struct pipe_inode_info *pipe, struct splice_desc *sd,
829 ops->release(pipe, buf); 829 ops->release(pipe, buf);
830 pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1); 830 pipe->curbuf = (pipe->curbuf + 1) & (pipe->buffers - 1);
831 pipe->nrbufs--; 831 pipe->nrbufs--;
832 if (pipe->inode) 832 if (pipe->files)
833 sd->need_wakeup = true; 833 sd->need_wakeup = true;
834 } 834 }
835 835
@@ -1001,8 +1001,6 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
1001 }; 1001 };
1002 ssize_t ret; 1002 ssize_t ret;
1003 1003
1004 sb_start_write(inode->i_sb);
1005
1006 pipe_lock(pipe); 1004 pipe_lock(pipe);
1007 1005
1008 splice_from_pipe_begin(&sd); 1006 splice_from_pipe_begin(&sd);
@@ -1038,7 +1036,6 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out,
1038 *ppos += ret; 1036 *ppos += ret;
1039 balance_dirty_pages_ratelimited(mapping); 1037 balance_dirty_pages_ratelimited(mapping);
1040 } 1038 }
1041 sb_end_write(inode->i_sb);
1042 1039
1043 return ret; 1040 return ret;
1044} 1041}
@@ -1118,7 +1115,10 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
1118 else 1115 else
1119 splice_write = default_file_splice_write; 1116 splice_write = default_file_splice_write;
1120 1117
1121 return splice_write(pipe, out, ppos, len, flags); 1118 file_start_write(out);
1119 ret = splice_write(pipe, out, ppos, len, flags);
1120 file_end_write(out);
1121 return ret;
1122} 1122}
1123 1123
1124/* 1124/*
@@ -1184,7 +1184,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd,
1184 */ 1184 */
1185 pipe = current->splice_pipe; 1185 pipe = current->splice_pipe;
1186 if (unlikely(!pipe)) { 1186 if (unlikely(!pipe)) {
1187 pipe = alloc_pipe_info(NULL); 1187 pipe = alloc_pipe_info();
1188 if (!pipe) 1188 if (!pipe)
1189 return -ENOMEM; 1189 return -ENOMEM;
1190 1190