diff options
author | Jens Axboe <axboe@suse.de> | 2006-05-02 15:29:57 +0200 |
---|---|---|
committer | Jens Axboe <axboe@suse.de> | 2006-05-02 15:29:57 +0200 |
commit | 330ab71619bacc4d4494227a6cfc9b7f5500403d (patch) | |
tree | 43a9045011116f1afa506b80de1ede9872f45935 /fs | |
parent | [PATCH] splice: fix page LRU accounting (diff) | |
download | linux-330ab71619bacc4d4494227a6cfc9b7f5500403d.tar.xz linux-330ab71619bacc4d4494227a6cfc9b7f5500403d.zip |
[PATCH] vmsplice: restrict stealing a little more
Apply the same rules as the anon pipe pages, only allow stealing
if no one else is using the page.
Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/pipe.c | 6 | ||||
-rw-r--r-- | fs/splice.c | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/fs/pipe.c b/fs/pipe.c index 3941a7f78b5d..5acd8954aaa0 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -184,8 +184,8 @@ void generic_pipe_buf_unmap(struct pipe_inode_info *pipe, kunmap(buf->page); } -static int anon_pipe_buf_steal(struct pipe_inode_info *pipe, - struct pipe_buffer *buf) +int generic_pipe_buf_steal(struct pipe_inode_info *pipe, + struct pipe_buffer *buf) { struct page *page = buf->page; @@ -213,7 +213,7 @@ static struct pipe_buf_operations anon_pipe_buf_ops = { .unmap = generic_pipe_buf_unmap, .pin = generic_pipe_buf_pin, .release = anon_pipe_buf_release, - .steal = anon_pipe_buf_steal, + .steal = generic_pipe_buf_steal, .get = generic_pipe_buf_get, }; diff --git a/fs/splice.c b/fs/splice.c index 3318b965c10b..7fb04970c72d 100644 --- a/fs/splice.c +++ b/fs/splice.c @@ -141,7 +141,7 @@ static int user_page_pipe_buf_steal(struct pipe_inode_info *pipe, if (!(buf->flags & PIPE_BUF_FLAG_GIFT)) return 1; - return 0; + return generic_pipe_buf_steal(pipe, buf); } static struct pipe_buf_operations user_page_pipe_buf_ops = { |