From 2dd8c9ad376ccc5d2980b38e96372a8e252ae8d0 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Wed, 20 Mar 2013 13:21:32 -0400 Subject: [PATCH] lift sb_start_write out of ->splice_write() Signed-off-by: Al Viro --- fs/splice.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/splice.c b/fs/splice.c index 17d7323bc2c5..7efc2f5057fb 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -1000,8 +1000,6 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out, }; ssize_t ret; - sb_start_write(inode->i_sb); - pipe_lock(pipe); splice_from_pipe_begin(&sd); @@ -1037,7 +1035,6 @@ generic_file_splice_write(struct pipe_inode_info *pipe, struct file *out, *ppos += ret; balance_dirty_pages_ratelimited(mapping); } - sb_end_write(inode->i_sb); return ret; } @@ -1064,9 +1061,7 @@ static ssize_t default_file_splice_write(struct pipe_inode_info *pipe, { ssize_t ret; - file_start_write(out); ret = splice_from_pipe(pipe, out, ppos, len, flags, write_pipe_buf); - file_end_write(out); if (ret > 0) *ppos += ret; @@ -1119,7 +1114,10 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, else splice_write = default_file_splice_write; - return splice_write(pipe, out, ppos, len, flags); + file_start_write(out); + ret = splice_write(pipe, out, ppos, len, flags); + file_end_write(out); + return ret; } /* -- 2.20.1