splice: add wakeup_pipe_readers()
PATCH 1/1 splice: add wakeup_pipe_readers()
Add and use wakeup_pipe_readers() to consolidate duplicated codes.
Signed-off-by Namhyung Kim <[email protected]>
Cc Jens Axboe <[email protected]>
--- fs/splice.c | 33 +++++++++++++++------------------ 1 files changed, 15 insertions(+), 18 deletions(-)
fs/splice.c +15 -18
@@ -162,6 +162,14 @@ static const struct pipe_buf_operations user_page_pipe_buf_ops = { .get = generic_pipe_buf_get, }; +static void wakeup_pipe_readers (struct pipe_inode_info *pipe) +{ +smp_mb (); +if (waitqueue_active (&pipe->wait)) +wake_up_interruptible (&pipe->wait); +kill_fasync (&pipe->fasync_readers,SIGIO ,POLL_IN ); +} +/** * splice_to_pipe - fill passed data into a pipe * @pipe: pipe to fill
@@ -247,12 +255,8 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,pipe_unlock (pipe); -if (do_wakeup) { -smp_mb (); -if (waitqueue_active (&pipe->wait)) -wake_up_interruptible (&pipe->wait); -kill_fasync (&pipe->fasync_readers,SIGIO ,POLL_IN ); - } +if (do_wakeup) +wakeup_pipe_readers (pipe);while (page_nr < spd_pages) spd->spd_release (spd, page_nr++);
@@ -1892,12 +1896,9 @@ retry:/* * If we put data in the output pipe, wakeup any potential readers. */ -if (ret >0 ) { -smp_mb (); -if (waitqueue_active (&opipe->wait)) -wake_up_interruptible (&opipe->wait); -kill_fasync (&opipe->fasync_readers,SIGIO ,POLL_IN ); - } +if (ret >0 ) +wakeup_pipe_readers (opipe); +if (input_wakeup)wakeup_pipe_writers (ipipe);
@@ -1976,12 +1977,8 @@ static int link_pipe(struct pipe_inode_info *ipipe,/* * If we put data in the output pipe, wakeup any potential readers. */ -if (ret >0 ) { -smp_mb (); -if (waitqueue_active (&opipe->wait)) -wake_up_interruptible (&opipe->wait); -kill_fasync (&opipe->fasync_readers,SIGIO ,POLL_IN ); - } +if (ret >0 ) +wakeup_pipe_readers (opipe);return ret; }
Signature · 1 line
1.7.5
Quoted 1 line · Namhyung Kim
Add and use
wakeup_pipe_readers()to consolidate duplicated codes.
Looks fine, thanks. Applied.
Signature · 1 line
Jens Axboe