|
@@ -694,7 +694,7 @@ struct file_operations
|
|
|
----------------------
|
|
|
|
|
|
This describes how the VFS can manipulate an open file. As of kernel
|
|
|
-2.6.13, the following members are defined:
|
|
|
+2.6.17, the following members are defined:
|
|
|
|
|
|
struct file_operations {
|
|
|
loff_t (*llseek) (struct file *, loff_t, int);
|
|
@@ -723,6 +723,10 @@ struct file_operations {
|
|
|
int (*check_flags)(int);
|
|
|
int (*dir_notify)(struct file *filp, unsigned long arg);
|
|
|
int (*flock) (struct file *, int, struct file_lock *);
|
|
|
+ ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned
|
|
|
+int);
|
|
|
+ ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned
|
|
|
+int);
|
|
|
};
|
|
|
|
|
|
Again, all methods are called without any locks being held, unless
|
|
@@ -790,6 +794,12 @@ otherwise noted.
|
|
|
|
|
|
flock: called by the flock(2) system call
|
|
|
|
|
|
+ splice_write: called by the VFS to splice data from a pipe to a file. This
|
|
|
+ method is used by the splice(2) system call
|
|
|
+
|
|
|
+ splice_read: called by the VFS to splice data from file to a pipe. This
|
|
|
+ method is used by the splice(2) system call
|
|
|
+
|
|
|
Note that the file operations are implemented by the specific
|
|
|
filesystem in which the inode resides. When opening a device node
|
|
|
(character or block special) most filesystems will call special
|