pipe: allow passing around of ops private pointer
Jens Axboe [Mon, 11 Jun 2007 10:00:45 +0000 (12:00 +0200)]
relay needs this for proper consumption handling, and the network
receive support needs it as well to lookup the sk_buff on pipe
release.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

fs/splice.c
include/linux/pipe_fs_i.h
include/linux/splice.h

index bea9f15..00850e5 100644 (file)
@@ -185,6 +185,7 @@ ssize_t splice_to_pipe(struct pipe_inode_info *pipe,
                        buf->page = spd->pages[page_nr];
                        buf->offset = spd->partial[page_nr].offset;
                        buf->len = spd->partial[page_nr].len;
+                       buf->private = spd->partial[page_nr].private;
                        buf->ops = spd->ops;
                        if (spd->flags & SPLICE_F_GIFT)
                                buf->flags |= PIPE_BUF_FLAG_GIFT;
index 7ba228d..4409167 100644 (file)
@@ -14,6 +14,7 @@ struct pipe_buffer {
        unsigned int offset, len;
        const struct pipe_buf_operations *ops;
        unsigned int flags;
+       unsigned long private;
 };
 
 struct pipe_inode_info {
index f8cc97f..33e447f 100644 (file)
@@ -41,6 +41,7 @@ struct splice_desc {
 struct partial_page {
        unsigned int offset;
        unsigned int len;
+       unsigned long private;
 };
 
 /*