diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-04-10 09:18:35 -0400 |
---|---|---|
committer | Jens Axboe <axboe@suse.de> | 2006-04-10 09:18:35 -0400 |
commit | 3a326a2ce88e71d00ac0d133e314a3342a7709f8 (patch) | |
tree | 3a3cf55be19311c04d195e37baec9f49c4015b18 /include/linux/pipe_fs_i.h | |
parent | 0b749ce3802428007a37870eb51ba3c0bdf90857 (diff) |
[PATCH] introduce a "kernel-internal pipe object" abstraction
separate out the 'internal pipe object' abstraction, and make it
usable to splice. This cleans up and fixes several aspects of the
internal splice APIs and the pipe code:
- pipes: the allocation and freeing of pipe_inode_info is now more symmetric
and more streamlined with existing kernel practices.
- splice: small micro-optimization: less pointer dereferencing in splice
methods
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Update XFS for the ->splice_read/->splice_write changes.
Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'include/linux/pipe_fs_i.h')
-rw-r--r-- | include/linux/pipe_fs_i.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index ec384958d509..9cf99cb34c15 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h | |||
@@ -36,6 +36,7 @@ struct pipe_inode_info { | |||
36 | unsigned int w_counter; | 36 | unsigned int w_counter; |
37 | struct fasync_struct *fasync_readers; | 37 | struct fasync_struct *fasync_readers; |
38 | struct fasync_struct *fasync_writers; | 38 | struct fasync_struct *fasync_writers; |
39 | struct inode *inode; | ||
39 | }; | 40 | }; |
40 | 41 | ||
41 | /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual | 42 | /* Differs from PIPE_BUF in that PIPE_SIZE is the length of the actual |
@@ -53,10 +54,10 @@ struct pipe_inode_info { | |||
53 | #define PIPE_FASYNC_WRITERS(inode) (&((inode).i_pipe->fasync_writers)) | 54 | #define PIPE_FASYNC_WRITERS(inode) (&((inode).i_pipe->fasync_writers)) |
54 | 55 | ||
55 | /* Drop the inode semaphore and wait for a pipe event, atomically */ | 56 | /* Drop the inode semaphore and wait for a pipe event, atomically */ |
56 | void pipe_wait(struct inode * inode); | 57 | void pipe_wait(struct pipe_inode_info *pipe); |
57 | 58 | ||
58 | struct inode* pipe_new(struct inode* inode); | 59 | struct pipe_inode_info * alloc_pipe_info(struct inode * inode); |
59 | void free_pipe_info(struct inode* inode); | 60 | void free_pipe_info(struct inode * inode); |
60 | 61 | ||
61 | /* | 62 | /* |
62 | * splice is tied to pipes as a transport (at least for now), so we'll just | 63 | * splice is tied to pipes as a transport (at least for now), so we'll just |