summaryrefslogtreecommitdiff
path: root/fs/pipe.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2006-03-30 15:16:46 +0200
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-30 12:28:18 -0800
commit5abc97aa25b2c41413b3a520faee83f2282d9f18 (patch)
tree4ba13ae0e91f15d02986df7cdca5e9455212d7d4 /fs/pipe.c
parent5274f052e7b3dbd81935772eb551dfd0325dfa9d (diff)
downloadlwn-5abc97aa25b2c41413b3a520faee83f2282d9f18.tar.gz
lwn-5abc97aa25b2c41413b3a520faee83f2282d9f18.zip
[PATCH] splice: add support for SPLICE_F_MOVE flag
This enables the caller to migrate pages from one address space page cache to another. In buzz word marketing, you can do zero-copy file copies! Signed-off-by: Jens Axboe <axboe@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/pipe.c')
-rw-r--r--fs/pipe.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/pipe.c b/fs/pipe.c
index 2414bf270db6..109a102c150d 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -121,11 +121,19 @@ static void anon_pipe_buf_unmap(struct pipe_inode_info *info, struct pipe_buffer
kunmap(buf->page);
}
+static int anon_pipe_buf_steal(struct pipe_inode_info *info,
+ struct pipe_buffer *buf)
+{
+ buf->stolen = 1;
+ return 0;
+}
+
static struct pipe_buf_operations anon_pipe_buf_ops = {
.can_merge = 1,
.map = anon_pipe_buf_map,
.unmap = anon_pipe_buf_unmap,
.release = anon_pipe_buf_release,
+ .steal = anon_pipe_buf_steal,
};
static ssize_t